# 1 "./md.cil.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "./md.cil.c"
# 22 "linux-2.4.19/include/asm/atomic.h"
struct __anonstruct_atomic_t_1 {
   int volatile counter ;
};
# 22 "linux-2.4.19/include/asm/atomic.h"
typedef struct __anonstruct_atomic_t_1 atomic_t;
# 47 "linux-2.4.19/include/asm/page.h"
struct __anonstruct_pgd_t_4 {
   unsigned long pgd ;
};
# 47 "linux-2.4.19/include/asm/page.h"
typedef struct __anonstruct_pgd_t_4 pgd_t;
# 52 "linux-2.4.19/include/asm/page.h"
struct __anonstruct_pgprot_t_5 {
   unsigned long pgprot ;
};
# 52 "linux-2.4.19/include/asm/page.h"
typedef struct __anonstruct_pgprot_t_5 pgprot_t;
# 26 "linux-2.4.19/include/asm/spinlock.h"
struct __anonstruct_spinlock_t_6 {
   unsigned int volatile lock ;
};
# 26 "linux-2.4.19/include/asm/spinlock.h"
typedef struct __anonstruct_spinlock_t_6 spinlock_t;
# 152 "linux-2.4.19/include/asm/spinlock.h"
struct __anonstruct_rwlock_t_7 {
   unsigned int volatile lock ;
};
# 152 "linux-2.4.19/include/asm/spinlock.h"
typedef struct __anonstruct_rwlock_t_7 rwlock_t;
# 161 "linux-2.4.19/include/linux/spinlock.h"
union __anonunion_spinlock_cacheline_t_8 {
   spinlock_t lock ;
   char fill_up[32] ;
};
# 161 "linux-2.4.19/include/linux/spinlock.h"
typedef union __anonunion_spinlock_cacheline_t_8 __attribute__((__aligned__((1) <<
                                                                              (5) ))) spinlock_cacheline_t;
# 68 "linux-2.4.19/include/asm/vm86.h"
struct vm86_regs {
   long ebx ;
   long ecx ;
   long edx ;
   long esi ;
   long edi ;
   long ebp ;
   long eax ;
   long __null_ds ;
   long __null_es ;
   long __null_fs ;
   long __null_gs ;
   long orig_eax ;
   long eip ;
   unsigned short cs ;
   unsigned short __csh ;
   long eflags ;
   long esp ;
   unsigned short ss ;
   unsigned short __ssh ;
   unsigned short es ;
   unsigned short __esh ;
   unsigned short ds ;
   unsigned short __dsh ;
   unsigned short fs ;
   unsigned short __fsh ;
   unsigned short gs ;
   unsigned short __gsh ;
};
# 98 "linux-2.4.19/include/asm/vm86.h"
struct revectored_struct {
   unsigned long __map[8] ;
};
# 102 "linux-2.4.19/include/asm/vm86.h"
struct vm86_struct {
   struct vm86_regs regs ;
   unsigned long flags ;
   unsigned long screen_bitmap ;
   unsigned long cpu_type ;
   struct revectored_struct int_revectored ;
   struct revectored_struct int21_revectored ;
};
# 173 "linux-2.4.19/include/asm/vm86.h"
struct pt_regs;
# 13 "linux-2.4.19/include/asm/math_emu.h"
struct info {
   long ___orig_eip ;
   long ___ebx ;
   long ___ecx ;
   long ___edx ;
   long ___esi ;
   long ___edi ;
   long ___ebp ;
   long ___eax ;
   long ___ds ;
   long ___es ;
   long ___orig_eax ;
   long ___eip ;
   long ___cs ;
   long ___eflags ;
   long ___esp ;
   long ___ss ;
   long ___vm86_es ;
   long ___vm86_ds ;
   long ___vm86_fs ;
   long ___vm86_gs ;
};
# 4 "linux-2.4.19/include/asm/types.h"
typedef unsigned short umode_t;
# 12 "linux-2.4.19/include/asm/types.h"
typedef unsigned char __u8;
# 14 "linux-2.4.19/include/asm/types.h"
typedef short __s16;
# 15 "linux-2.4.19/include/asm/types.h"
typedef unsigned short __u16;
# 17 "linux-2.4.19/include/asm/types.h"
typedef int __s32;
# 18 "linux-2.4.19/include/asm/types.h"
typedef unsigned int __u32;
# 21 "linux-2.4.19/include/asm/types.h"
typedef long long __s64;
# 22 "linux-2.4.19/include/asm/types.h"
typedef unsigned long long __u64;
# 33 "linux-2.4.19/include/asm/types.h"
typedef unsigned char u8;
# 36 "linux-2.4.19/include/asm/types.h"
typedef unsigned short u16;
# 38 "linux-2.4.19/include/asm/types.h"
typedef int s32;
# 39 "linux-2.4.19/include/asm/types.h"
typedef unsigned int u32;
# 42 "linux-2.4.19/include/asm/types.h"
typedef unsigned long long u64;
# 286 "linux-2.4.19/include/asm/processor.h"
struct i387_fsave_struct {
   long cwd ;
   long swd ;
   long twd ;
   long fip ;
   long fcs ;
   long foo ;
   long fos ;
   long st_space[20] ;
   long status ;
};
# 298 "linux-2.4.19/include/asm/processor.h"
struct i387_fxsave_struct {
   unsigned short cwd ;
   unsigned short swd ;
   unsigned short twd ;
   unsigned short fop ;
   long fip ;
   long fcs ;
   long foo ;
   long fos ;
   long mxcsr ;
   long reserved ;
   long st_space[32] ;
   long xmm_space[32] ;
   long padding[56] ;
} __attribute__((__aligned__(16))) ;
# 314 "linux-2.4.19/include/asm/processor.h"
struct i387_soft_struct {
   long cwd ;
   long swd ;
   long twd ;
   long fip ;
   long fcs ;
   long foo ;
   long fos ;
   long st_space[20] ;
   unsigned char ftop ;
   unsigned char changed ;
   unsigned char lookahead ;
   unsigned char no_update ;
   unsigned char rm ;
   unsigned char alimit ;
   struct info *info ;
   unsigned long entry_eip ;
};
# 328 "linux-2.4.19/include/asm/processor.h"
union i387_union {
   struct i387_fsave_struct fsave ;
   struct i387_fxsave_struct fxsave ;
   struct i387_soft_struct soft ;
};
# 334 "linux-2.4.19/include/asm/processor.h"
struct __anonstruct_mm_segment_t_9 {
   unsigned long seg ;
};
# 334 "linux-2.4.19/include/asm/processor.h"
typedef struct __anonstruct_mm_segment_t_9 mm_segment_t;
# 369 "linux-2.4.19/include/asm/processor.h"
struct thread_struct {
   unsigned long esp0 ;
   unsigned long eip ;
   unsigned long esp ;
   unsigned long fs ;
   unsigned long gs ;
   unsigned long debugreg[8] ;
   unsigned long cr2 ;
   unsigned long trap_no ;
   unsigned long error_code ;
   union i387_union i387 ;
   struct vm86_struct *vm86_info ;
   unsigned long screen_bitmap ;
   unsigned long v86flags ;
   unsigned long v86mask ;
   unsigned long saved_esp0 ;
   int ioperm ;
   unsigned long io_bitmap[33] ;
};
# 428 "linux-2.4.19/include/asm/processor.h"
struct task_struct;
# 428 "linux-2.4.19/include/asm/processor.h"
struct task_struct;
# 429 "linux-2.4.19/include/asm/processor.h"
struct mm_struct;
# 429 "linux-2.4.19/include/asm/processor.h"
struct mm_struct;
# 18 "linux-2.4.19/include/linux/list.h"
struct list_head {
   struct list_head *next ;
   struct list_head *prev ;
};
# 28 "linux-2.4.19/include/linux/module.h"
struct exception_table_entry;
# 28 "linux-2.4.19/include/linux/module.h"
struct exception_table_entry;
# 37 "linux-2.4.19/include/linux/module.h"
struct module_symbol {
   unsigned long value ;
   char const *name ;
};
# 43 "linux-2.4.19/include/linux/module.h"
struct module;
# 43 "linux-2.4.19/include/linux/module.h"
struct module_ref {
   struct module *dep ;
   struct module *ref ;
   struct module_ref *next_ref ;
};
# 51 "linux-2.4.19/include/linux/module.h"
struct module_persist;
# 51 "linux-2.4.19/include/linux/module.h"
struct module_persist;
# 53 "linux-2.4.19/include/linux/module.h"
union __anonunion_uc_10 {
   atomic_t usecount ;
   long pad ;
};
# 53 "linux-2.4.19/include/linux/module.h"
struct module {
   unsigned long size_of_struct ;
   struct module *next ;
   char const *name ;
   unsigned long size ;
   union __anonunion_uc_10 uc ;
   unsigned long flags ;
   unsigned int nsyms ;
   unsigned int ndeps ;
   struct module_symbol *syms ;
   struct module_ref *deps ;
   struct module_ref *refs ;
   int (*init)(void) ;
   void (*cleanup)(void) ;
   struct exception_table_entry const *ex_table_start ;
   struct exception_table_entry const *ex_table_end ;
   struct module_persist const *persist_start ;
   struct module_persist const *persist_end ;
   int (*can_unload)(void) ;
   int runsize ;
   char const *kallsyms_start ;
   char const *kallsyms_end ;
   char const *archdata_start ;
   char const *archdata_end ;
   char const *kernel_data ;
};
# 26 "linux-2.4.19/include/asm/ptrace.h"
struct pt_regs {
   long ebx ;
   long ecx ;
   long edx ;
   long esi ;
   long edi ;
   long ebp ;
   long eax ;
   int xds ;
   int xes ;
   long orig_eax ;
   long eip ;
   int xcs ;
   long eflags ;
   long esp ;
   int xss ;
};
# 36 "linux-2.4.19/include/linux/posix_types.h"
struct __anonstruct___kernel_fd_set_11 {
   unsigned long fds_bits[(int )(1024U / (8U * sizeof(unsigned long )))] ;
};
# 36 "linux-2.4.19/include/linux/posix_types.h"
typedef struct __anonstruct___kernel_fd_set_11 __kernel_fd_set;
# 44 "linux-2.4.19/include/linux/posix_types.h"
typedef int __kernel_key_t;
# 10 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned short __kernel_dev_t;
# 11 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned long __kernel_ino_t;
# 12 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned short __kernel_mode_t;
# 13 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned short __kernel_nlink_t;
# 14 "linux-2.4.19/include/asm/posix_types.h"
typedef long __kernel_off_t;
# 15 "linux-2.4.19/include/asm/posix_types.h"
typedef int __kernel_pid_t;
# 19 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned int __kernel_size_t;
# 20 "linux-2.4.19/include/asm/posix_types.h"
typedef int __kernel_ssize_t;
# 22 "linux-2.4.19/include/asm/posix_types.h"
typedef long __kernel_time_t;
# 23 "linux-2.4.19/include/asm/posix_types.h"
typedef long __kernel_suseconds_t;
# 24 "linux-2.4.19/include/asm/posix_types.h"
typedef long __kernel_clock_t;
# 29 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned int __kernel_uid32_t;
# 30 "linux-2.4.19/include/asm/posix_types.h"
typedef unsigned int __kernel_gid32_t;
# 36 "linux-2.4.19/include/asm/posix_types.h"
typedef long long __kernel_loff_t;
# 39 "linux-2.4.19/include/asm/posix_types.h"
struct __anonstruct___kernel_fsid_t_12 {
   int val[2] ;
};
# 39 "linux-2.4.19/include/asm/posix_types.h"
typedef struct __anonstruct___kernel_fsid_t_12 __kernel_fsid_t;
# 13 "linux-2.4.19/include/linux/types.h"
typedef __kernel_fd_set fd_set;
# 14 "linux-2.4.19/include/linux/types.h"
typedef __kernel_dev_t dev_t;
# 15 "linux-2.4.19/include/linux/types.h"
typedef __kernel_ino_t ino_t;
# 16 "linux-2.4.19/include/linux/types.h"
typedef __kernel_mode_t mode_t;
# 17 "linux-2.4.19/include/linux/types.h"
typedef __kernel_nlink_t nlink_t;
# 18 "linux-2.4.19/include/linux/types.h"
typedef __kernel_off_t off_t;
# 19 "linux-2.4.19/include/linux/types.h"
typedef __kernel_pid_t pid_t;
# 21 "linux-2.4.19/include/linux/types.h"
typedef __kernel_key_t key_t;
# 22 "linux-2.4.19/include/linux/types.h"
typedef __kernel_suseconds_t suseconds_t;
# 25 "linux-2.4.19/include/linux/types.h"
typedef __kernel_uid32_t uid_t;
# 26 "linux-2.4.19/include/linux/types.h"
typedef __kernel_gid32_t gid_t;
# 45 "linux-2.4.19/include/linux/types.h"
typedef __kernel_loff_t loff_t;
# 54 "linux-2.4.19/include/linux/types.h"
typedef __kernel_size_t size_t;
# 59 "linux-2.4.19/include/linux/types.h"
typedef __kernel_ssize_t ssize_t;
# 69 "linux-2.4.19/include/linux/types.h"
typedef __kernel_time_t time_t;
# 74 "linux-2.4.19/include/linux/types.h"
typedef __kernel_clock_t clock_t;
# 84 "linux-2.4.19/include/linux/types.h"
typedef unsigned short u_short;
# 86 "linux-2.4.19/include/linux/types.h"
typedef unsigned long u_long;
# 101 "linux-2.4.19/include/linux/types.h"
typedef __u32 u_int32_t;
# 102 "linux-2.4.19/include/linux/types.h"
typedef __s32 int32_t;
# 57 "linux-2.4.19/include/linux/kernel.h"
struct completion;
# 57 "linux-2.4.19/include/linux/kernel.h"
struct completion;
# 59 "linux-2.4.19/include/linux/kernel.h"
struct notifier_block;
# 31 "linux-2.4.19/include/linux/wait.h"
struct __wait_queue {
   unsigned int flags ;
   struct task_struct *task ;
   struct list_head task_list ;
};
# 41 "linux-2.4.19/include/linux/wait.h"
typedef struct __wait_queue wait_queue_t;
# 77 "linux-2.4.19/include/linux/wait.h"
struct __wait_queue_head {
   spinlock_t lock ;
   struct list_head task_list ;
};
# 85 "linux-2.4.19/include/linux/wait.h"
typedef struct __wait_queue_head wait_queue_head_t;
# 12 "linux-2.4.19/include/asm/statfs.h"
struct statfs {
   long f_type ;
   long f_bsize ;
   long f_blocks ;
   long f_bfree ;
   long f_bavail ;
   long f_files ;
   long f_ffree ;
   __kernel_fsid_t f_fsid ;
   long f_namelen ;
   long f_spare[6] ;
};
# 19 "linux-2.4.19/include/linux/uio.h"
struct iovec {
   void *iov_base ;
   __kernel_size_t iov_len ;
};
# 11 "linux-2.4.19/include/linux/socket.h"
typedef unsigned short sa_family_t;
# 17 "linux-2.4.19/include/linux/socket.h"
struct sockaddr {
   sa_family_t sa_family ;
   char sa_data[14] ;
};
# 33 "linux-2.4.19/include/linux/socket.h"
struct msghdr {
   void *msg_name ;
   int msg_namelen ;
   struct iovec *msg_iov ;
   __kernel_size_t msg_iovlen ;
   void *msg_control ;
   __kernel_size_t msg_controllen ;
   unsigned int msg_flags ;
};
# 125 "linux-2.4.19/include/linux/socket.h"
struct ucred {
   __u32 pid ;
   __u32 uid ;
   __u32 gid ;
};
# 25 "linux-2.4.19/include/linux/net.h"
struct poll_table_struct;
# 25 "linux-2.4.19/include/linux/net.h"
struct poll_table_struct;
# 49 "linux-2.4.19/include/linux/net.h"
enum __anonenum_socket_state_13 {
    SS_FREE = 0,
    SS_UNCONNECTED = 1,
    SS_CONNECTING = 2,
    SS_CONNECTED = 3,
    SS_DISCONNECTING = 4
} ;
# 49 "linux-2.4.19/include/linux/net.h"
typedef enum __anonenum_socket_state_13 socket_state;
# 65 "linux-2.4.19/include/linux/net.h"
struct proto_ops;
# 65 "linux-2.4.19/include/linux/net.h"
struct inode;
# 65 "linux-2.4.19/include/linux/net.h"
struct fasync_struct;
# 65 "linux-2.4.19/include/linux/net.h"
struct file;
# 65 "linux-2.4.19/include/linux/net.h"
struct sock;
# 65 "linux-2.4.19/include/linux/net.h"
struct socket {
   socket_state state ;
   unsigned long flags ;
   struct proto_ops *ops ;
   struct inode *inode ;
   struct fasync_struct *fasync_list ;
   struct file *file ;
   struct sock *sk ;
   wait_queue_head_t wait ;
   short type ;
   unsigned char passcred ;
};
# 83 "linux-2.4.19/include/linux/net.h"
struct scm_cookie;
# 83 "linux-2.4.19/include/linux/net.h"
struct scm_cookie;
# 84 "linux-2.4.19/include/linux/net.h"
struct vm_area_struct;
# 84 "linux-2.4.19/include/linux/net.h"
struct vm_area_struct;
# 85 "linux-2.4.19/include/linux/net.h"
struct page;
# 85 "linux-2.4.19/include/linux/net.h"
struct page;
# 87 "linux-2.4.19/include/linux/net.h"
struct proto_ops {
   int family ;
   int (*release)(struct socket *sock ) ;
   int (*bind)(struct socket *sock , struct sockaddr *umyaddr , int sockaddr_len ) ;
   int (*connect)(struct socket *sock , struct sockaddr *uservaddr , int sockaddr_len ,
                  int flags ) ;
   int (*socketpair)(struct socket *sock1 , struct socket *sock2 ) ;
   int (*accept)(struct socket *sock , struct socket *newsock , int flags ) ;
   int (*getname)(struct socket *sock , struct sockaddr *uaddr , int *usockaddr_len ,
                  int peer ) ;
   unsigned int (*poll)(struct file *file , struct socket *sock , struct poll_table_struct *wait ) ;
   int (*ioctl)(struct socket *sock , unsigned int cmd , unsigned long arg ) ;
   int (*listen)(struct socket *sock , int len ) ;
   int (*shutdown)(struct socket *sock , int flags ) ;
   int (*setsockopt)(struct socket *sock , int level , int optname , char *optval ,
                     int optlen ) ;
   int (*getsockopt)(struct socket *sock , int level , int optname , char *optval ,
                     int *optlen ) ;
   int (*sendmsg)(struct socket *sock , struct msghdr *m , int total_len , struct scm_cookie *scm ) ;
   int (*recvmsg)(struct socket *sock , struct msghdr *m , int total_len , int flags ,
                  struct scm_cookie *scm ) ;
   int (*mmap)(struct file *file , struct socket *sock , struct vm_area_struct *vma ) ;
   ssize_t (*sendpage)(struct socket *sock , struct page *page , int offset , size_t size ,
                       int flags ) ;
};
# 67 "linux-2.4.19/include/linux/kdev_t.h"
typedef unsigned short kdev_t;
# 19 "linux-2.4.19/include/linux/mount.h"
struct dentry;
# 19 "linux-2.4.19/include/linux/mount.h"
struct super_block;
# 19 "linux-2.4.19/include/linux/mount.h"
struct vfsmount {
   struct list_head mnt_hash ;
   struct vfsmount *mnt_parent ;
   struct dentry *mnt_mountpoint ;
   struct dentry *mnt_root ;
   struct super_block *mnt_sb ;
   struct list_head mnt_mounts ;
   struct list_head mnt_child ;
   atomic_t mnt_count ;
   int mnt_flags ;
   char *mnt_devname ;
   struct list_head mnt_list ;
};
# 24 "linux-2.4.19/include/linux/dcache.h"
struct qstr {
   unsigned char const *name ;
   unsigned int len ;
   unsigned int hash ;
};
# 66 "linux-2.4.19/include/linux/dcache.h"
struct dentry_operations;
# 66 "linux-2.4.19/include/linux/dcache.h"
struct dentry {
   atomic_t d_count ;
   unsigned int d_flags ;
   struct inode *d_inode ;
   struct dentry *d_parent ;
   struct list_head d_hash ;
   struct list_head d_lru ;
   struct list_head d_child ;
   struct list_head d_subdirs ;
   struct list_head d_alias ;
   int d_mounted ;
   struct qstr d_name ;
   unsigned long d_time ;
   struct dentry_operations *d_op ;
   struct super_block *d_sb ;
   unsigned long d_vfs_flags ;
   void *d_fsdata ;
   unsigned char d_iname[16] ;
};
# 86 "linux-2.4.19/include/linux/dcache.h"
struct dentry_operations {
   int (*d_revalidate)(struct dentry * , int ) ;
   int (*d_hash)(struct dentry * , struct qstr * ) ;
   int (*d_compare)(struct dentry * , struct qstr * , struct qstr * ) ;
   int (*d_delete)(struct dentry * ) ;
   void (*d_release)(struct dentry * ) ;
   void (*d_iput)(struct dentry * , struct inode * ) ;
};
# 28 "linux-2.4.19/include/linux/fs.h"
struct poll_table_struct;
# 12 "linux-2.4.19/include/asm/system.h"
struct task_struct;
# 145 "linux-2.4.19/include/asm/system.h"
struct __xchg_dummy {
   unsigned long a[100] ;
};
# 22 "linux-2.4.19/include/linux/rwsem.h"
struct rw_semaphore;
# 22 "linux-2.4.19/include/linux/rwsem.h"
struct rw_semaphore;
# 53 "linux-2.4.19/include/asm/rwsem.h"
struct rw_semaphore {
   long count ;
   spinlock_t wait_lock ;
   struct list_head wait_list ;
};
# 44 "linux-2.4.19/include/asm/semaphore.h"
struct semaphore {
   atomic_t count ;
   int sleepers ;
   wait_queue_head_t wait ;
};
# 241 "linux-2.4.19/include/linux/fs.h"
struct buffer_head {
   struct buffer_head *b_next ;
   unsigned long b_blocknr ;
   unsigned short b_size ;
   unsigned short b_list ;
   kdev_t b_dev ;
   atomic_t b_count ;
   kdev_t b_rdev ;
   unsigned long b_state ;
   unsigned long b_flushtime ;
   struct buffer_head *b_next_free ;
   struct buffer_head *b_prev_free ;
   struct buffer_head *b_this_page ;
   struct buffer_head *b_reqnext ;
   struct buffer_head **b_pprev ;
   char *b_data ;
   struct page *b_page ;
   void (*b_end_io)(struct buffer_head *bh , int uptodate ) ;
   void *b_private ;
   unsigned long b_rsector ;
   wait_queue_head_t b_wait ;
   struct inode *b_inode ;
   struct list_head b_inode_buffers ;
};
# 5 "linux-2.4.19/include/linux/pipe_fs_i.h"
struct pipe_inode_info {
   wait_queue_head_t wait ;
   char *base ;
   unsigned int len ;
   unsigned int start ;
   unsigned int readers ;
   unsigned int writers ;
   unsigned int waiting_readers ;
   unsigned int waiting_writers ;
   unsigned int r_counter ;
   unsigned int w_counter ;
};
# 7 "linux-2.4.19/include/linux/minix_fs_i.h"
union __anonunion_u_14 {
   __u16 i1_data[16] ;
   __u32 i2_data[16] ;
};
# 7 "linux-2.4.19/include/linux/minix_fs_i.h"
struct minix_inode_info {
   union __anonunion_u_14 u ;
};
# 22 "linux-2.4.19/include/linux/ext2_fs_i.h"
struct ext2_inode_info {
   __u32 i_data[15] ;
   __u32 i_flags ;
   __u32 i_faddr ;
   __u8 i_frag_no ;
   __u8 i_frag_size ;
   __u32 i_file_acl ;
   __u32 i_dir_acl ;
   __u32 i_dtime ;
   __u32 i_block_group ;
   __u32 i_next_alloc_block ;
   __u32 i_next_alloc_goal ;
   __u32 i_prealloc_block ;
   __u32 i_prealloc_count ;
   __u32 i_dir_start_lookup ;
   int i_new_inode : 1 ;
};
# 24 "linux-2.4.19/include/linux/ext3_fs_i.h"
struct ext3_inode_info {
   __u32 i_data[15] ;
   __u32 i_flags ;
   __u32 i_file_acl ;
   __u32 i_dir_acl ;
   __u32 i_dtime ;
   __u32 i_block_group ;
   __u32 i_state ;
   __u32 i_next_alloc_block ;
   __u32 i_next_alloc_goal ;
   __u32 i_dir_start_lookup ;
   struct list_head i_orphan ;
   loff_t i_disksize ;
   struct rw_semaphore truncate_sem ;
};
# 4 "linux-2.4.19/include/linux/hpfs_fs_i.h"
struct hpfs_inode_info {
   unsigned long mmu_private ;
   ino_t i_parent_dir ;
   unsigned int i_dno ;
   unsigned int i_dpos ;
   unsigned int i_dsubdno ;
   unsigned int i_file_sec ;
   unsigned int i_disk_sec ;
   unsigned int i_n_secs ;
   unsigned int i_ea_size ;
   unsigned int i_conv : 2 ;
   unsigned int i_ea_mode : 1 ;
   unsigned int i_ea_uid : 1 ;
   unsigned int i_ea_gid : 1 ;
   unsigned int i_dirty : 1 ;
   struct semaphore i_sem ;
   loff_t **i_rddir_off ;
};
# 7 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct ntfs_attribute;
# 7 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct ntfs_attribute;
# 8 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct ntfs_sb_info;
# 8 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct ntfs_sb_info;
# 15 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef u32 ntfs_u32;
# 25 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef __kernel_mode_t ntmode_t;
# 29 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef uid_t ntfs_uid_t;
# 33 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef gid_t ntfs_gid_t;
# 37 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef __kernel_size_t ntfs_size_t;
# 69 "linux-2.4.19/include/linux/ntfs_fs_i.h"
typedef s32 ntfs_cluster_t;
# 73 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct __anonstruct_index_16 {
   int recordsize ;
   int clusters_per_record ;
};
# 73 "linux-2.4.19/include/linux/ntfs_fs_i.h"
union __anonunion_u_15 {
   struct __anonstruct_index_16 index ;
};
# 73 "linux-2.4.19/include/linux/ntfs_fs_i.h"
struct ntfs_inode_info {
   struct ntfs_sb_info *vol ;
   unsigned long i_number ;
   __u16 sequence_number ;
   unsigned char *attr ;
   int attr_count ;
   struct ntfs_attribute *attrs ;
   int record_count ;
   int *records ;
   union __anonunion_u_15 u ;
};
# 8 "linux-2.4.19/include/linux/msdos_fs_i.h"
struct msdos_inode_info {
   unsigned long mmu_private ;
   int i_start ;
   int i_logstart ;
   int i_attrs ;
   int i_ctime_ms ;
   int i_location ;
   struct inode *i_fat_inode ;
   struct list_head i_fat_hash ;
};
# 39 "linux-2.4.19/include/linux/umsdos_fs_i.h"
struct dir_locking_info {
   wait_queue_head_t p ;
   short looking ;
   short creating ;
   long pid ;
};
# 50 "linux-2.4.19/include/linux/umsdos_fs_i.h"
struct umsdos_inode_info {
   struct msdos_inode_info msdos_info ;
   struct dir_locking_info dir_info ;
   int i_patched ;
   int i_is_hlink ;
   off_t pos ;
};
# 13 "linux-2.4.19/include/linux/iso_fs_i.h"
struct iso_inode_info {
   unsigned int i_first_extent ;
   unsigned char i_file_format ;
   unsigned char i_format_parm[3] ;
   unsigned long i_next_section_ino ;
   off_t i_section_size ;
};
# 95 "linux-2.4.19/include/linux/nfs.h"
struct nfs_fh {
   unsigned short size ;
   unsigned char data[64] ;
};
# 11 "linux-2.4.19/include/linux/nfs_fs_i.h"
struct rpc_cred;
# 11 "linux-2.4.19/include/linux/nfs_fs_i.h"
struct nfs_inode_info {
   __u64 fileid ;
   struct nfs_fh fh ;
   unsigned short flags ;
   unsigned long read_cache_jiffies ;
   __u64 read_cache_ctime ;
   __u64 read_cache_mtime ;
   __u64 read_cache_isize ;
   unsigned long attrtimeo ;
   unsigned long attrtimeo_timestamp ;
   unsigned long cache_mtime_jiffies ;
   __u32 cookieverf[2] ;
   struct list_head read ;
   struct list_head dirty ;
   struct list_head commit ;
   struct list_head writeback ;
   unsigned int nread ;
   unsigned int ndirty ;
   unsigned int ncommit ;
   unsigned int npages ;
   struct rpc_cred *mm_cred ;
};
# 92 "linux-2.4.19/include/linux/nfs_fs_i.h"
struct nlm_host;
# 92 "linux-2.4.19/include/linux/nfs_fs_i.h"
struct nfs_lock_info {
   u32 state ;
   u32 flags ;
   struct nlm_host *host ;
};
# 7 "linux-2.4.19/include/linux/sysv_fs_i.h"
struct sysv_inode_info {
   u32 i_data[13] ;
   u32 i_dir_start_lookup ;
};
# 88 "linux-2.4.19/include/linux/time.h"
struct timeval {
   time_t tv_sec ;
   suseconds_t tv_usec ;
};
# 17 "linux-2.4.19/include/linux/affs_fs_i.h"
struct affs_ext_key {
   u32 ext ;
   u32 key ;
};
# 25 "linux-2.4.19/include/linux/affs_fs_i.h"
struct affs_inode_info {
   u32 i_opencnt ;
   struct semaphore i_link_lock ;
   struct semaphore i_ext_lock ;
   u32 i_blkcnt ;
   u32 i_extcnt ;
   u32 *i_lc ;
   u32 i_lc_size ;
   u32 i_lc_shift ;
   u32 i_lc_mask ;
   struct affs_ext_key *i_ac ;
   u32 i_ext_last ;
   struct buffer_head *i_ext_bh ;
   unsigned long mmu_private ;
   u32 i_protect ;
   u32 i_lastalloc ;
   int i_pa_cnt ;
};
# 16 "linux-2.4.19/include/linux/ufs_fs_i.h"
union __anonunion_i_u1_18 {
   __u32 i_data[15] ;
   __u8 i_symlink[60] ;
};
# 16 "linux-2.4.19/include/linux/ufs_fs_i.h"
struct ufs_inode_info {
   union __anonunion_i_u1_18 i_u1 ;
   __u32 i_flags ;
   __u32 i_gen ;
   __u32 i_shadow ;
   __u32 i_unused1 ;
   __u32 i_unused2 ;
   __u32 i_oeftflag ;
   __u16 i_osync ;
   __u32 i_lastfrag ;
};
# 20 "linux-2.4.19/include/linux/efs_fs_i.h"
struct extent_s {
   unsigned int ex_magic : 8 ;
   unsigned int ex_bn : 24 ;
   unsigned int ex_length : 8 ;
   unsigned int ex_offset : 24 ;
};
# 20 "linux-2.4.19/include/linux/efs_fs_i.h"
union extent_u {
   unsigned char raw[8] ;
   struct extent_s cooked ;
};
# 20 "linux-2.4.19/include/linux/efs_fs_i.h"
typedef union extent_u efs_extent;
# 59 "linux-2.4.19/include/linux/efs_fs_i.h"
struct efs_inode_info {
   int numextents ;
   int lastextent ;
   efs_extent extents[12] ;
};
# 198 "linux-2.4.19/include/linux/coda.h"
typedef u_long VolumeId;
# 199 "linux-2.4.19/include/linux/coda.h"
typedef u_long VnodeId;
# 200 "linux-2.4.19/include/linux/coda.h"
typedef u_long Unique_t;
# 206 "linux-2.4.19/include/linux/coda.h"
struct ViceFid {
   VolumeId Volume ;
   VnodeId Vnode ;
   Unique_t Unique ;
};
# 233 "linux-2.4.19/include/linux/coda.h"
typedef u_int32_t vuid_t;
# 234 "linux-2.4.19/include/linux/coda.h"
typedef u_int32_t vgid_t;
# 239 "linux-2.4.19/include/linux/coda.h"
struct coda_cred {
   vuid_t cr_uid ;
   vuid_t cr_euid ;
   vuid_t cr_suid ;
   vuid_t cr_fsuid ;
   vgid_t cr_groupid ;
   vgid_t cr_egid ;
   vgid_t cr_sgid ;
   vgid_t cr_fsgid ;
};
# 19 "linux-2.4.19/include/linux/coda_fs_i.h"
struct coda_inode_info {
   struct ViceFid c_fid ;
   u_short c_flags ;
   struct list_head c_cilist ;
   int c_mapcount ;
   struct coda_cred c_cached_cred ;
   unsigned int c_cached_perm ;
};
# 6 "linux-2.4.19/include/linux/romfs_fs_i.h"
struct romfs_inode_info {
   unsigned long i_metasize ;
   unsigned long i_dataoffset ;
};
# 16 "linux-2.4.19/include/linux/shmem_fs.h"
struct __anonstruct_swp_entry_t_19 {
   unsigned long val ;
};
# 16 "linux-2.4.19/include/linux/shmem_fs.h"
typedef struct __anonstruct_swp_entry_t_19 swp_entry_t;
# 22 "linux-2.4.19/include/linux/shmem_fs.h"
struct shmem_inode_info {
   spinlock_t lock ;
   struct semaphore sem ;
   unsigned long next_index ;
   swp_entry_t i_direct[16] ;
   void **i_indirect ;
   unsigned long swapped ;
   int locked ;
   struct list_head list ;
   struct inode *inode ;
};
# 34 "linux-2.4.19/include/linux/shmem_fs.h"
struct shmem_sb_info {
   unsigned long max_blocks ;
   unsigned long free_blocks ;
   unsigned long max_inodes ;
   unsigned long free_inodes ;
   spinlock_t stat_lock ;
};
# 18 "linux-2.4.19/include/linux/smb_fs_i.h"
struct smb_inode_info {
   unsigned int open ;
   __u16 fileid ;
   __u16 attr ;
   __u16 access ;
   __u16 flags ;
   unsigned long oldmtime ;
   unsigned long closed ;
   unsigned int openers ;
};
# 19 "linux-2.4.19/include/linux/hfs_fs_i.h"
struct hfs_cat_entry;
# 19 "linux-2.4.19/include/linux/hfs_fs_i.h"
struct hfs_fork;
# 19 "linux-2.4.19/include/linux/hfs_fs_i.h"
struct hfs_hdr_layout;
# 19 "linux-2.4.19/include/linux/hfs_fs_i.h"
struct hfs_inode_info {
   int magic ;
   unsigned long mmu_private ;
   struct hfs_cat_entry *entry ;
   struct hfs_fork *fork ;
   int convert ;
   ino_t file_type ;
   char dir_size ;
   struct hfs_hdr_layout const *default_layout ;
   struct hfs_hdr_layout *layout ;
   int tz_secondswest ;
   void (*d_drop_op)(struct dentry * , ino_t ) ;
};
# 13 "linux-2.4.19/include/linux/adfs_fs_i.h"
struct adfs_inode_info {
   unsigned long mmu_private ;
   unsigned long parent_id ;
   __u32 loadaddr ;
   __u32 execaddr ;
   unsigned int filetype ;
   unsigned int attr ;
   int stamped : 1 ;
};
# 15 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u16 qnx4_nxtnt_t;
# 16 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u8 qnx4_ftype_t;
# 18 "linux-2.4.19/include/linux/qnxtypes.h"
struct __anonstruct_qnx4_xtnt_t_20 {
   __u32 xtnt_blk ;
   __u32 xtnt_size ;
};
# 18 "linux-2.4.19/include/linux/qnxtypes.h"
typedef struct __anonstruct_qnx4_xtnt_t_20 qnx4_xtnt_t;
# 23 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u16 qnx4_mode_t;
# 24 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u16 qnx4_muid_t;
# 25 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u16 qnx4_mgid_t;
# 26 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u32 qnx4_off_t;
# 27 "linux-2.4.19/include/linux/qnxtypes.h"
typedef __u16 qnx4_nlink_t;
# 19 "linux-2.4.19/include/linux/qnx4_fs_i.h"
struct qnx4_inode_info {
   char i_reserved[16] ;
   qnx4_off_t i_size ;
   qnx4_xtnt_t i_first_xtnt ;
   __u32 i_xblk ;
   __s32 i_ftime ;
   __s32 i_mtime ;
   __s32 i_atime ;
   __s32 i_ctime ;
   qnx4_nxtnt_t i_num_xtnts ;
   qnx4_mode_t i_mode ;
   qnx4_muid_t i_uid ;
   qnx4_mgid_t i_gid ;
   qnx4_nlink_t i_nlink ;
   __u8 i_zero[4] ;
   qnx4_ftype_t i_type ;
   __u8 i_status ;
   unsigned long mmu_private ;
};
# 27 "linux-2.4.19/include/linux/reiserfs_fs_i.h"
struct reiserfs_inode_info {
   __u32 i_key[4] ;
   __u32 i_flags ;
   __u32 i_first_direct_byte ;
   __u32 i_attrs ;
   int i_prealloc_block ;
   int i_prealloc_count ;
   struct list_head i_prealloc_list ;
   unsigned long i_trans_id ;
   unsigned long i_trans_index ;
};
# 12 "linux-2.4.19/include/linux/bfs_fs_i.h"
struct bfs_inode_info {
   unsigned long i_dsk_ino ;
   unsigned long i_sblock ;
   unsigned long i_eblock ;
};
# 24 "linux-2.4.19/include/linux/udf_fs_i.h"
struct __anonstruct_lb_addr_22 {
   __u32 logicalBlockNum ;
   __u16 partitionReferenceNum ;
} __attribute__((__packed__)) ;
# 24 "linux-2.4.19/include/linux/udf_fs_i.h"
typedef struct __anonstruct_lb_addr_22 lb_addr;
# 31 "linux-2.4.19/include/linux/udf_fs_i.h"
struct udf_inode_info {
   long i_umtime ;
   long i_uctime ;
   long i_crtime ;
   long i_ucrtime ;
   lb_addr i_location ;
   __u64 i_unique ;
   __u32 i_lenEAttr ;
   __u32 i_lenAlloc ;
   __u64 i_lenExtents ;
   __u32 i_next_alloc_block ;
   __u32 i_next_alloc_goal ;
   unsigned int i_alloc_type : 3 ;
   unsigned int i_extended_fe : 1 ;
   unsigned int i_strat_4096 : 1 ;
   unsigned int i_new_inode : 1 ;
   unsigned int reserved : 26 ;
};
# 17 "linux-2.4.19/include/linux/ncp_fs_i.h"
struct ncp_inode_info {
   __u32 dirEntNum __attribute__((__packed__)) ;
   __u32 DosDirNum __attribute__((__packed__)) ;
   __u32 volNumber __attribute__((__packed__)) ;
   __u32 nwattr ;
   struct semaphore open_sem ;
   atomic_t opened ;
   int access ;
   __u32 server_file_handle __attribute__((__packed__)) ;
   __u8 open_create_action __attribute__((__packed__)) ;
   __u8 file_handle[6] __attribute__((__packed__)) ;
};
# 1 "linux-2.4.19/include/linux/proc_fs_i.h"
union __anonunion_op_23 {
   int (*proc_get_link)(struct inode * , struct dentry ** , struct vfsmount ** ) ;
   int (*proc_read)(struct task_struct *task , char *page ) ;
};
# 1 "linux-2.4.19/include/linux/proc_fs_i.h"
struct proc_inode_info {
   struct task_struct *task ;
   int type ;
   union __anonunion_op_23 op ;
   struct file *file ;
};
# 1 "linux-2.4.19/include/linux/usbdev_fs_i.h"
struct usb_device;
# 1 "linux-2.4.19/include/linux/usbdev_fs_i.h"
struct usb_device;
# 2 "linux-2.4.19/include/linux/usbdev_fs_i.h"
struct usb_bus;
# 2 "linux-2.4.19/include/linux/usbdev_fs_i.h"
struct usb_bus;
# 4 "linux-2.4.19/include/linux/usbdev_fs_i.h"
union __anonunion_p_24 {
   struct usb_device *dev ;
   struct usb_bus *bus ;
};
# 4 "linux-2.4.19/include/linux/usbdev_fs_i.h"
struct usbdev_inode_info {
   struct list_head dlist ;
   struct list_head slist ;
   union __anonunion_p_24 p ;
};
# 16 "linux-2.4.19/include/linux/jffs2_fs_i.h"
struct jffs2_node_frag;
# 16 "linux-2.4.19/include/linux/jffs2_fs_i.h"
struct jffs2_full_dnode;
# 16 "linux-2.4.19/include/linux/jffs2_fs_i.h"
struct jffs2_full_dirent;
# 16 "linux-2.4.19/include/linux/jffs2_fs_i.h"
struct jffs2_inode_cache;
# 16 "linux-2.4.19/include/linux/jffs2_fs_i.h"
struct jffs2_inode_info {
   struct semaphore sem ;
   __u32 highest_version ;
   struct jffs2_node_frag *fraglist ;
   struct jffs2_full_dnode *metadata ;
   struct jffs2_full_dirent *dents ;
   struct jffs2_inode_cache *inocache ;
   __u16 flags ;
   __u8 usercompr ;
};
# 7 "linux-2.4.19/include/linux/cramfs_fs_sb.h"
struct cramfs_sb_info {
   unsigned long magic ;
   unsigned long size ;
   unsigned long blocks ;
   unsigned long files ;
   unsigned long flags ;
};
# 348 "linux-2.4.19/include/linux/fs.h"
struct iattr {
   unsigned int ia_valid ;
   umode_t ia_mode ;
   uid_t ia_uid ;
   gid_t ia_gid ;
   loff_t ia_size ;
   time_t ia_atime ;
   time_t ia_mtime ;
   time_t ia_ctime ;
   unsigned int ia_attr_flags ;
};
# 109 "linux-2.4.19/include/linux/quota.h"
struct dqblk {
   __u32 dqb_bhardlimit ;
   __u32 dqb_bsoftlimit ;
   __u32 dqb_curblocks ;
   __u32 dqb_ihardlimit ;
   __u32 dqb_isoftlimit ;
   __u32 dqb_curinodes ;
   time_t dqb_btime ;
   time_t dqb_itime ;
};
# 159 "linux-2.4.19/include/linux/quota.h"
struct dquot {
   struct list_head dq_hash ;
   struct list_head dq_inuse ;
   struct list_head dq_free ;
   wait_queue_head_t dq_wait_lock ;
   wait_queue_head_t dq_wait_free ;
   int dq_count ;
   struct super_block *dq_sb ;
   unsigned int dq_id ;
   kdev_t dq_dev ;
   short dq_type ;
   short dq_flags ;
   unsigned long dq_referenced ;
   struct dqblk dq_dqb ;
};
# 378 "linux-2.4.19/include/linux/fs.h"
struct page;
# 379 "linux-2.4.19/include/linux/fs.h"
struct address_space;
# 379 "linux-2.4.19/include/linux/fs.h"
struct address_space;
# 380 "linux-2.4.19/include/linux/fs.h"
struct kiobuf;
# 380 "linux-2.4.19/include/linux/fs.h"
struct kiobuf;
# 382 "linux-2.4.19/include/linux/fs.h"
struct address_space_operations {
   int (*writepage)(struct page * ) ;
   int (*readpage)(struct file * , struct page * ) ;
   int (*sync_page)(struct page * ) ;
   int (*prepare_write)(struct file * , struct page * , unsigned int , unsigned int ) ;
   int (*commit_write)(struct file * , struct page * , unsigned int , unsigned int ) ;
   int (*bmap)(struct address_space * , long ) ;
   int (*flushpage)(struct page * , unsigned long ) ;
   int (*releasepage)(struct page * , int ) ;
   int (*direct_IO)(int , struct inode * , struct kiobuf * , unsigned long , int ) ;
};
# 400 "linux-2.4.19/include/linux/fs.h"
struct address_space {
   struct list_head clean_pages ;
   struct list_head dirty_pages ;
   struct list_head locked_pages ;
   unsigned long nrpages ;
   struct address_space_operations *a_ops ;
   struct inode *host ;
   struct vm_area_struct *i_mmap ;
   struct vm_area_struct *i_mmap_shared ;
   spinlock_t i_shared_lock ;
   int gfp_mask ;
};
# 413 "linux-2.4.19/include/linux/fs.h"
struct char_device {
   struct list_head hash ;
   atomic_t count ;
   dev_t dev ;
   atomic_t openers ;
   struct semaphore sem ;
};
# 421 "linux-2.4.19/include/linux/fs.h"
struct block_device_operations;
# 421 "linux-2.4.19/include/linux/fs.h"
struct block_device {
   struct list_head bd_hash ;
   atomic_t bd_count ;
   struct inode *bd_inode ;
   dev_t bd_dev ;
   int bd_openers ;
   struct block_device_operations const *bd_op ;
   struct semaphore bd_sem ;
   struct list_head bd_inodes ;
};
# 432 "linux-2.4.19/include/linux/fs.h"
struct inode_operations;
# 432 "linux-2.4.19/include/linux/fs.h"
struct file_operations;
# 432 "linux-2.4.19/include/linux/fs.h"
struct file_lock;
# 432 "linux-2.4.19/include/linux/fs.h"
struct dnotify_struct;
# 432 "linux-2.4.19/include/linux/fs.h"
union __anonunion_u_25 {
   struct minix_inode_info minix_i ;
   struct ext2_inode_info ext2_i ;
   struct ext3_inode_info ext3_i ;
   struct hpfs_inode_info hpfs_i ;
   struct ntfs_inode_info ntfs_i ;
   struct msdos_inode_info msdos_i ;
   struct umsdos_inode_info umsdos_i ;
   struct iso_inode_info isofs_i ;
   struct nfs_inode_info nfs_i ;
   struct sysv_inode_info sysv_i ;
   struct affs_inode_info affs_i ;
   struct ufs_inode_info ufs_i ;
   struct efs_inode_info efs_i ;
   struct romfs_inode_info romfs_i ;
   struct shmem_inode_info shmem_i ;
   struct coda_inode_info coda_i ;
   struct smb_inode_info smbfs_i ;
   struct hfs_inode_info hfs_i ;
   struct adfs_inode_info adfs_i ;
   struct qnx4_inode_info qnx4_i ;
   struct reiserfs_inode_info reiserfs_i ;
   struct bfs_inode_info bfs_i ;
   struct udf_inode_info udf_i ;
   struct ncp_inode_info ncpfs_i ;
   struct proc_inode_info proc_i ;
   struct socket socket_i ;
   struct usbdev_inode_info usbdev_i ;
   struct jffs2_inode_info jffs2_i ;
   void *generic_ip ;
};
# 432 "linux-2.4.19/include/linux/fs.h"
struct inode {
   struct list_head i_hash ;
   struct list_head i_list ;
   struct list_head i_dentry ;
   struct list_head i_dirty_buffers ;
   struct list_head i_dirty_data_buffers ;
   unsigned long i_ino ;
   atomic_t i_count ;
   kdev_t i_dev ;
   umode_t i_mode ;
   nlink_t i_nlink ;
   uid_t i_uid ;
   gid_t i_gid ;
   kdev_t i_rdev ;
   loff_t i_size ;
   time_t i_atime ;
   time_t i_mtime ;
   time_t i_ctime ;
   unsigned int i_blkbits ;
   unsigned long i_blksize ;
   unsigned long i_blocks ;
   unsigned long i_version ;
   struct semaphore i_sem ;
   struct semaphore i_zombie ;
   struct inode_operations *i_op ;
   struct file_operations *i_fop ;
   struct super_block *i_sb ;
   wait_queue_head_t i_wait ;
   struct file_lock *i_flock ;
   struct address_space *i_mapping ;
   struct address_space i_data ;
   struct dquot *i_dquot[2] ;
   struct list_head i_devices ;
   struct pipe_inode_info *i_pipe ;
   struct block_device *i_bdev ;
   struct char_device *i_cdev ;
   unsigned long i_dnotify_mask ;
   struct dnotify_struct *i_dnotify ;
   unsigned long i_state ;
   unsigned int i_flags ;
   unsigned char i_sock ;
   atomic_t i_writecount ;
   unsigned int i_attr_flags ;
   __u32 i_generation ;
   union __anonunion_u_25 u ;
};
# 516 "linux-2.4.19/include/linux/fs.h"
struct fown_struct {
   int pid ;
   uid_t uid ;
   uid_t euid ;
   int signum ;
};
# 522 "linux-2.4.19/include/linux/fs.h"
struct file {
   struct list_head f_list ;
   struct dentry *f_dentry ;
   struct vfsmount *f_vfsmnt ;
   struct file_operations *f_op ;
   atomic_t f_count ;
   unsigned int f_flags ;
   mode_t f_mode ;
   loff_t f_pos ;
   unsigned long f_reada ;
   unsigned long f_ramax ;
   unsigned long f_raend ;
   unsigned long f_ralen ;
   unsigned long f_rawin ;
   struct fown_struct f_owner ;
   unsigned int f_uid ;
   unsigned int f_gid ;
   int f_error ;
   unsigned long f_version ;
   void *private_data ;
   struct kiobuf *f_iobuf ;
   long f_iobuf_lock ;
};
# 578 "linux-2.4.19/include/linux/fs.h"
struct files_struct;
# 578 "linux-2.4.19/include/linux/fs.h"
typedef struct files_struct *fl_owner_t;
# 580 "linux-2.4.19/include/linux/fs.h"
union __anonunion_fl_u_26 {
   struct nfs_lock_info nfs_fl ;
};
# 580 "linux-2.4.19/include/linux/fs.h"
struct file_lock {
   struct file_lock *fl_next ;
   struct list_head fl_link ;
   struct list_head fl_block ;
   fl_owner_t fl_owner ;
   unsigned int fl_pid ;
   wait_queue_head_t fl_wait ;
   struct file *fl_file ;
   unsigned char fl_flags ;
   unsigned char fl_type ;
   loff_t fl_start ;
   loff_t fl_end ;
   void (*fl_notify)(struct file_lock * ) ;
   void (*fl_insert)(struct file_lock * ) ;
   void (*fl_remove)(struct file_lock * ) ;
   struct fasync_struct *fl_fasync ;
   union __anonunion_fl_u_26 fl_u ;
};
# 636 "linux-2.4.19/include/linux/fs.h"
struct fasync_struct {
   int magic ;
   int fa_fd ;
   struct fasync_struct *fa_next ;
   struct file *fa_file ;
};
# 652 "linux-2.4.19/include/linux/fs.h"
struct nameidata {
   struct dentry *dentry ;
   struct vfsmount *mnt ;
   struct qstr last ;
   unsigned int flags ;
   int last_type ;
};
# 663 "linux-2.4.19/include/linux/fs.h"
struct quota_mount_options {
   unsigned int flags ;
   struct semaphore dqio_sem ;
   struct semaphore dqoff_sem ;
   struct file *files[2] ;
   time_t inode_expire[2] ;
   time_t block_expire[2] ;
   char rsquash[2] ;
};
# 7 "linux-2.4.19/include/linux/minix_fs_sb.h"
struct minix_super_block;
# 7 "linux-2.4.19/include/linux/minix_fs_sb.h"
struct minix_sb_info {
   unsigned long s_ninodes ;
   unsigned long s_nzones ;
   unsigned long s_imap_blocks ;
   unsigned long s_zmap_blocks ;
   unsigned long s_firstdatazone ;
   unsigned long s_log_zone_size ;
   unsigned long s_max_size ;
   int s_dirsize ;
   int s_namelen ;
   int s_link_max ;
   struct buffer_head **s_imap ;
   struct buffer_head **s_zmap ;
   struct buffer_head *s_sbh ;
   struct minix_super_block *s_ms ;
   unsigned short s_mount_state ;
   unsigned short s_version ;
};
# 30 "linux-2.4.19/include/linux/ext2_fs_sb.h"
struct ext2_super_block;
# 30 "linux-2.4.19/include/linux/ext2_fs_sb.h"
struct ext2_sb_info {
   unsigned long s_frag_size ;
   unsigned long s_frags_per_block ;
   unsigned long s_inodes_per_block ;
   unsigned long s_frags_per_group ;
   unsigned long s_blocks_per_group ;
   unsigned long s_inodes_per_group ;
   unsigned long s_itb_per_group ;
   unsigned long s_gdb_count ;
   unsigned long s_desc_per_block ;
   unsigned long s_groups_count ;
   struct buffer_head *s_sbh ;
   struct ext2_super_block *s_es ;
   struct buffer_head **s_group_desc ;
   unsigned short s_loaded_inode_bitmaps ;
   unsigned short s_loaded_block_bitmaps ;
   unsigned long s_inode_bitmap_number[8] ;
   struct buffer_head *s_inode_bitmap[8] ;
   unsigned long s_block_bitmap_number[8] ;
   struct buffer_head *s_block_bitmap[8] ;
   unsigned long s_mount_opt ;
   uid_t s_resuid ;
   gid_t s_resgid ;
   unsigned short s_mount_state ;
   unsigned short s_pad ;
   int s_addr_per_block_bits ;
   int s_desc_per_block_bits ;
   int s_inode_size ;
   int s_first_ino ;
};
# 16 "linux-2.4.19/include/linux/timer.h"
struct timer_list {
   struct list_head list ;
   unsigned long expires ;
   unsigned long data ;
   void (*function)(unsigned long ) ;
};
# 35 "linux-2.4.19/include/linux/ext3_fs_sb.h"
struct ext3_super_block;
# 35 "linux-2.4.19/include/linux/ext3_fs_sb.h"
struct journal_s;
# 35 "linux-2.4.19/include/linux/ext3_fs_sb.h"
struct ext3_sb_info {
   unsigned long s_frag_size ;
   unsigned long s_frags_per_block ;
   unsigned long s_inodes_per_block ;
   unsigned long s_frags_per_group ;
   unsigned long s_blocks_per_group ;
   unsigned long s_inodes_per_group ;
   unsigned long s_itb_per_group ;
   unsigned long s_gdb_count ;
   unsigned long s_desc_per_block ;
   unsigned long s_groups_count ;
   struct buffer_head *s_sbh ;
   struct ext3_super_block *s_es ;
   struct buffer_head **s_group_desc ;
   unsigned short s_loaded_inode_bitmaps ;
   unsigned short s_loaded_block_bitmaps ;
   unsigned long s_inode_bitmap_number[8] ;
   struct buffer_head *s_inode_bitmap[8] ;
   unsigned long s_block_bitmap_number[8] ;
   struct buffer_head *s_block_bitmap[8] ;
   unsigned long s_mount_opt ;
   uid_t s_resuid ;
   gid_t s_resgid ;
   unsigned short s_mount_state ;
   unsigned short s_pad ;
   int s_addr_per_block_bits ;
   int s_desc_per_block_bits ;
   int s_inode_size ;
   int s_first_ino ;
   u32 s_next_generation ;
   struct inode *s_journal_inode ;
   struct journal_s *s_journal ;
   struct list_head s_orphan ;
   unsigned long s_commit_interval ;
   struct block_device *journal_bdev ;
};
# 4 "linux-2.4.19/include/linux/hpfs_fs_sb.h"
struct hpfs_sb_info {
   ino_t sb_root ;
   unsigned int sb_fs_size ;
   unsigned int sb_bitmaps ;
   unsigned int sb_dirband_start ;
   unsigned int sb_dirband_size ;
   unsigned int sb_dmap ;
   unsigned int sb_n_free ;
   unsigned int sb_n_free_dnodes ;
   uid_t sb_uid ;
   gid_t sb_gid ;
   umode_t sb_mode ;
   unsigned int sb_conv : 2 ;
   unsigned int sb_eas : 2 ;
   unsigned int sb_err : 2 ;
   unsigned int sb_chk : 2 ;
   unsigned int sb_lowercase : 1 ;
   unsigned int sb_was_error : 1 ;
   unsigned int sb_chkdsk : 2 ;
   unsigned int sb_rd_fnode : 2 ;
   unsigned int sb_rd_inode : 2 ;
   wait_queue_head_t sb_iget_q ;
   unsigned char *sb_cp_table ;
   unsigned int *sb_bmp_dir ;
   unsigned int sb_c_bitmap ;
   wait_queue_head_t sb_creation_de ;
   unsigned int sb_creation_de_lock : 1 ;
   int sb_timeshift ;
};
# 6 "linux-2.4.19/include/linux/ntfs_fs_sb.h"
struct ntfs_sb_info {
   ntfs_uid_t uid ;
   ntfs_gid_t gid ;
   ntmode_t umask ;
   void *nls_map ;
   unsigned int ngt ;
   char mft_zone_multiplier ;
   unsigned long mft_data_pos ;
   ntfs_cluster_t mft_zone_pos ;
   ntfs_cluster_t mft_zone_start ;
   ntfs_cluster_t mft_zone_end ;
   ntfs_cluster_t data1_zone_pos ;
   ntfs_cluster_t data2_zone_pos ;
   ntfs_size_t partition_bias ;
   ntfs_u32 at_standard_information ;
   ntfs_u32 at_attribute_list ;
   ntfs_u32 at_file_name ;
   ntfs_u32 at_volume_version ;
   ntfs_u32 at_security_descriptor ;
   ntfs_u32 at_volume_name ;
   ntfs_u32 at_volume_information ;
   ntfs_u32 at_data ;
   ntfs_u32 at_index_root ;
   ntfs_u32 at_index_allocation ;
   ntfs_u32 at_bitmap ;
   ntfs_u32 at_symlink ;
   int sector_size ;
   int cluster_size ;
   int cluster_size_bits ;
   int mft_clusters_per_record ;
   int mft_record_size ;
   int mft_record_size_bits ;
   int index_clusters_per_record ;
   int index_record_size ;
   int index_record_size_bits ;
   ntfs_cluster_t nr_clusters ;
   ntfs_cluster_t mft_lcn ;
   ntfs_cluster_t mft_mirr_lcn ;
   unsigned char *mft ;
   unsigned short *upcase ;
   unsigned int upcase_length ;
   struct ntfs_inode_info *mft_ino ;
   struct ntfs_inode_info *mftmirr ;
   struct ntfs_inode_info *bitmap ;
   struct super_block *sb ;
   unsigned char ino_flags ;
};
# 6 "linux-2.4.19/include/linux/fat_cvf.h"
struct cvf_format {
   int cvf_version ;
   char *cvf_version_text ;
   unsigned long flags ;
   int (*detect_cvf)(struct super_block *sb ) ;
   int (*mount_cvf)(struct super_block *sb , char *options ) ;
   int (*unmount_cvf)(struct super_block *sb ) ;
   struct buffer_head *(*cvf_bread)(struct super_block *sb , int block ) ;
   struct buffer_head *(*cvf_getblk)(struct super_block *sb , int block ) ;
   void (*cvf_brelse)(struct super_block *sb , struct buffer_head *bh ) ;
   void (*cvf_mark_buffer_dirty)(struct super_block *sb , struct buffer_head *bh ) ;
   void (*cvf_set_uptodate)(struct super_block *sb , struct buffer_head *bh , int val ) ;
   int (*cvf_is_uptodate)(struct super_block *sb , struct buffer_head *bh ) ;
   void (*cvf_ll_rw_block)(struct super_block *sb , int opr , int nbreq , struct buffer_head **bh ) ;
   int (*fat_access)(struct super_block *sb , int nr , int new_value ) ;
   int (*cvf_statfs)(struct super_block *sb , struct statfs *buf , int bufsiz ) ;
   int (*cvf_bmap)(struct inode *inode , int block ) ;
   ssize_t (*cvf_file_read)(struct file * , char * , size_t , loff_t * ) ;
   ssize_t (*cvf_file_write)(struct file * , char const * , size_t , loff_t * ) ;
   int (*cvf_mmap)(struct file * , struct vm_area_struct * ) ;
   int (*cvf_readpage)(struct inode * , struct page * ) ;
   int (*cvf_writepage)(struct inode * , struct page * ) ;
   int (*cvf_dir_ioctl)(struct inode *inode , struct file *filp , unsigned int cmd ,
                        unsigned long arg ) ;
   void (*zero_out_cluster)(struct inode * , int clusternr ) ;
};
# 9 "linux-2.4.19/include/linux/msdos_fs_sb.h"
struct fat_mount_options {
   uid_t fs_uid ;
   gid_t fs_gid ;
   unsigned short fs_umask ;
   unsigned short codepage ;
   char *iocharset ;
   unsigned short shortname ;
   unsigned char name_check ;
   unsigned char conversion ;
   unsigned int quiet : 1 ;
   unsigned int showexec : 1 ;
   unsigned int sys_immutable : 1 ;
   unsigned int dotsOK : 1 ;
   unsigned int isvfat : 1 ;
   unsigned int utf8 : 1 ;
   unsigned int unicode_xlate : 1 ;
   unsigned int posixfs : 1 ;
   unsigned int numtail : 1 ;
   unsigned int atari : 1 ;
   unsigned int fat32 : 1 ;
   unsigned int nocase : 1 ;
};
# 32 "linux-2.4.19/include/linux/msdos_fs_sb.h"
struct nls_table;
# 32 "linux-2.4.19/include/linux/msdos_fs_sb.h"
struct msdos_sb_info {
   unsigned short cluster_size ;
   unsigned short cluster_bits ;
   unsigned char fats ;
   unsigned char fat_bits ;
   unsigned short fat_start ;
   unsigned long fat_length ;
   unsigned long dir_start ;
   unsigned short dir_entries ;
   unsigned long data_start ;
   unsigned long clusters ;
   unsigned long root_cluster ;
   unsigned long fsinfo_sector ;
   struct semaphore fat_lock ;
   int prev_free ;
   int free_clusters ;
   struct fat_mount_options options ;
   struct nls_table *nls_disk ;
   struct nls_table *nls_io ;
   struct cvf_format *cvf_format ;
   void *dir_ops ;
   void *private_data ;
   int dir_per_block ;
   int dir_per_block_bits ;
};
# 7 "linux-2.4.19/include/linux/iso_fs_sb.h"
struct isofs_sb_info {
   unsigned long s_ninodes ;
   unsigned long s_nzones ;
   unsigned long s_firstdatazone ;
   unsigned long s_log_zone_size ;
   unsigned long s_max_size ;
   unsigned char s_high_sierra ;
   unsigned char s_mapping ;
   int s_rock_offset ;
   unsigned char s_rock ;
   unsigned char s_joliet_level ;
   unsigned char s_utf8 ;
   unsigned char s_cruft ;
   unsigned char s_unhide ;
   unsigned char s_nosuid ;
   unsigned char s_nodev ;
   unsigned char s_nocompress ;
   mode_t s_mode ;
   gid_t s_gid ;
   uid_t s_uid ;
   struct nls_table *s_nls_iocharset ;
};
# 9 "linux-2.4.19/include/linux/nfs_fs_sb.h"
struct rpc_clnt;
# 9 "linux-2.4.19/include/linux/nfs_fs_sb.h"
struct nfs_rpc_ops;
# 9 "linux-2.4.19/include/linux/nfs_fs_sb.h"
struct nfs_reqlist;
# 9 "linux-2.4.19/include/linux/nfs_fs_sb.h"
struct nfs_server {
   struct rpc_clnt *client ;
   struct nfs_rpc_ops *rpc_ops ;
   int flags ;
   unsigned int rsize ;
   unsigned int rpages ;
   unsigned int wsize ;
   unsigned int wpages ;
   unsigned int dtsize ;
   unsigned int bsize ;
   unsigned int acregmin ;
   unsigned int acregmax ;
   unsigned int acdirmin ;
   unsigned int acdirmax ;
   unsigned int namelen ;
   char *hostname ;
   struct nfs_reqlist *rw_requests ;
   struct list_head lru_read ;
   struct list_head lru_dirty ;
   struct list_head lru_commit ;
   struct list_head lru_busy ;
};
# 35 "linux-2.4.19/include/linux/nfs_fs_sb.h"
struct nfs_sb_info {
   struct nfs_server s_server ;
};
# 13 "linux-2.4.19/include/linux/sysv_fs_sb.h"
struct sysv_sb_info {
   int s_type ;
   char s_bytesex ;
   char s_truncate ;
   nlink_t s_link_max ;
   unsigned int s_inodes_per_block ;
   unsigned int s_inodes_per_block_1 ;
   unsigned int s_inodes_per_block_bits ;
   unsigned int s_ind_per_block ;
   unsigned int s_ind_per_block_bits ;
   unsigned int s_ind_per_block_2 ;
   unsigned int s_toobig_block ;
   unsigned int s_block_base ;
   unsigned short s_fic_size ;
   unsigned short s_flc_size ;
   struct buffer_head *s_bh1 ;
   struct buffer_head *s_bh2 ;
   char *s_sbd1 ;
   char *s_sbd2 ;
   u16 *s_sb_fic_count ;
   u16 *s_sb_fic_inodes ;
   u16 *s_sb_total_free_inodes ;
   u16 *s_bcache_count ;
   u32 *s_bcache ;
   u32 *s_free_blocks ;
   u32 *s_sb_time ;
   u32 *s_sb_state ;
   u32 s_firstinodezone ;
   u32 s_firstdatazone ;
   u32 s_ninodes ;
   u32 s_ndatazones ;
   u32 s_nzones ;
   u16 s_namelen ;
};
# 11 "linux-2.4.19/include/linux/affs_fs_sb.h"
struct affs_bm_info {
   u32 bm_key ;
   u32 bm_free ;
};
# 16 "linux-2.4.19/include/linux/affs_fs_sb.h"
struct affs_sb_info {
   int s_partition_size ;
   int s_reserved ;
   u32 s_data_blksize ;
   u32 s_root_block ;
   int s_hashsize ;
   unsigned long s_flags ;
   uid_t s_uid ;
   gid_t s_gid ;
   umode_t s_mode ;
   struct buffer_head *s_root_bh ;
   struct semaphore s_bmlock ;
   struct affs_bm_info *s_bitmap ;
   u32 s_bmap_count ;
   u32 s_bmap_bits ;
   u32 s_last_bmap ;
   struct buffer_head *s_bmap_bh ;
   char *s_prefix ;
   int s_prefix_len ;
   char s_volume[32] ;
};
# 255 "linux-2.4.19/include/linux/ufs_fs.h"
struct ufs_csum {
   __u32 cs_ndir ;
   __u32 cs_nbfree ;
   __u32 cs_nifree ;
   __u32 cs_nffree ;
};
# 415 "linux-2.4.19/include/linux/ufs_fs.h"
struct __anonstruct_cg_44_37 {
   __u32 cg_clustersumoff ;
   __u32 cg_clusteroff ;
   __u32 cg_nclusterblks ;
   __u32 cg_sparecon[13] ;
};
# 415 "linux-2.4.19/include/linux/ufs_fs.h"
union __anonunion_cg_u_36 {
   struct __anonstruct_cg_44_37 cg_44 ;
   __u32 cg_sparecon[16] ;
};
# 415 "linux-2.4.19/include/linux/ufs_fs.h"
struct ufs_cylinder_group {
   __u32 cg_link ;
   __u32 cg_magic ;
   __u32 cg_time ;
   __u32 cg_cgx ;
   __u16 cg_ncyl ;
   __u16 cg_niblk ;
   __u32 cg_ndblk ;
   struct ufs_csum cg_cs ;
   __u32 cg_rotor ;
   __u32 cg_frotor ;
   __u32 cg_irotor ;
   __u32 cg_frsum[8] ;
   __u32 cg_btotoff ;
   __u32 cg_boff ;
   __u32 cg_iusedoff ;
   __u32 cg_freeoff ;
   __u32 cg_nextfreeoff ;
   union __anonunion_cg_u_36 cg_u ;
   __u8 cg_space[1] ;
};
# 519 "linux-2.4.19/include/linux/ufs_fs.h"
struct ufs_cg_private_info;
# 558 "linux-2.4.19/include/linux/ufs_fs.h"
struct file_system_type;
# 23 "linux-2.4.19/include/linux/ufs_fs_sb.h"
struct ufs_buffer_head {
   unsigned int fragment ;
   unsigned int count ;
   struct buffer_head *bh[8] ;
};
# 29 "linux-2.4.19/include/linux/ufs_fs_sb.h"
struct ufs_cg_private_info {
   struct ufs_cylinder_group ucg ;
   __u32 c_cgx ;
   __u16 c_ncyl ;
   __u16 c_niblk ;
   __u32 c_ndblk ;
   __u32 c_rotor ;
   __u32 c_frotor ;
   __u32 c_irotor ;
   __u32 c_btotoff ;
   __u32 c_boff ;
   __u32 c_iusedoff ;
   __u32 c_freeoff ;
   __u32 c_nextfreeoff ;
   __u32 c_clustersumoff ;
   __u32 c_clusteroff ;
   __u32 c_nclusterblks ;
};
# 48 "linux-2.4.19/include/linux/ufs_fs_sb.h"
struct ufs_sb_private_info {
   struct ufs_buffer_head s_ubh ;
   __u32 s_sblkno ;
   __u32 s_cblkno ;
   __u32 s_iblkno ;
   __u32 s_dblkno ;
   __u32 s_cgoffset ;
   __u32 s_cgmask ;
   __u32 s_size ;
   __u32 s_dsize ;
   __u32 s_ncg ;
   __u32 s_bsize ;
   __u32 s_fsize ;
   __u32 s_fpb ;
   __u32 s_minfree ;
   __u32 s_bmask ;
   __u32 s_fmask ;
   __u32 s_bshift ;
   __u32 s_fshift ;
   __u32 s_fpbshift ;
   __u32 s_fsbtodb ;
   __u32 s_sbsize ;
   __u32 s_csmask ;
   __u32 s_csshift ;
   __u32 s_nindir ;
   __u32 s_inopb ;
   __u32 s_nspf ;
   __u32 s_npsect ;
   __u32 s_interleave ;
   __u32 s_trackskew ;
   __u32 s_csaddr ;
   __u32 s_cssize ;
   __u32 s_cgsize ;
   __u32 s_ntrak ;
   __u32 s_nsect ;
   __u32 s_spc ;
   __u32 s_ipg ;
   __u32 s_fpg ;
   __u32 s_cpc ;
   __s32 s_contigsumsize ;
   __s64 s_qbmask ;
   __s64 s_qfmask ;
   __s32 s_postblformat ;
   __s32 s_nrpos ;
   __s32 s_postbloff ;
   __s32 s_rotbloff ;
   __u32 s_fpbmask ;
   __u32 s_apb ;
   __u32 s_2apb ;
   __u32 s_3apb ;
   __u32 s_apbmask ;
   __u32 s_apbshift ;
   __u32 s_2apbshift ;
   __u32 s_3apbshift ;
   __u32 s_nspfshift ;
   __u32 s_nspb ;
   __u32 s_inopf ;
   __u32 s_sbbase ;
   __u32 s_bpf ;
   __u32 s_bpfshift ;
   __u32 s_bpfmask ;
   __u32 s_maxsymlinklen ;
};
# 118 "linux-2.4.19/include/linux/ufs_fs_sb.h"
struct ufs_sb_info {
   struct ufs_sb_private_info *s_uspi ;
   struct ufs_csum *s_csp[31] ;
   unsigned int s_bytesex ;
   unsigned int s_flags ;
   struct buffer_head **s_ucg ;
   struct ufs_cg_private_info *s_ucpi[8] ;
   unsigned int s_cgno[8] ;
   unsigned short s_cg_loaded ;
   unsigned int s_mount_opt ;
};
# 49 "linux-2.4.19/include/linux/efs_fs_sb.h"
struct efs_sb_info {
   int32_t fs_magic ;
   int32_t fs_start ;
   int32_t first_block ;
   int32_t total_blocks ;
   int32_t group_size ;
   int32_t data_free ;
   int32_t inode_free ;
   short inode_blocks ;
   short total_groups ;
};
# 6 "linux-2.4.19/include/linux/romfs_fs_sb.h"
struct romfs_sb_info {
   unsigned long s_maxsize ;
};
# 14 "linux-2.4.19/include/linux/smb.h"
enum smb_protocol {
    SMB_PROTOCOL_NONE = 0,
    SMB_PROTOCOL_CORE = 1,
    SMB_PROTOCOL_COREPLUS = 2,
    SMB_PROTOCOL_LANMAN1 = 3,
    SMB_PROTOCOL_LANMAN2 = 4,
    SMB_PROTOCOL_NT1 = 5
} ;
# 23 "linux-2.4.19/include/linux/smb.h"
enum smb_case_hndl {
    SMB_CASE_DEFAULT = 0,
    SMB_CASE_LOWER = 1,
    SMB_CASE_UPPER = 2
} ;
# 36 "linux-2.4.19/include/linux/smb.h"
struct smb_conn_opt {
   unsigned int fd ;
   enum smb_protocol protocol ;
   enum smb_case_hndl case_handling ;
   __u32 max_xmit ;
   __u16 server_uid ;
   __u16 tid ;
   __u16 secmode ;
   __u16 maxmux ;
   __u16 maxvcs ;
   __u16 rawmode ;
   __u32 sesskey ;
   __u32 maxraw ;
   __u32 capabilities ;
   __s16 serverzone ;
};
# 96 "linux-2.4.19/include/linux/smb.h"
enum smb_conn_state {
    CONN_VALID = 0,
    CONN_INVALID = 1,
    CONN_RETRIED = 2,
    CONN_RETRYING = 3
} ;
# 23 "linux-2.4.19/include/linux/smb_fs_sb.h"
struct smb_mount_data_kernel;
# 23 "linux-2.4.19/include/linux/smb_fs_sb.h"
struct smb_sb_info {
   enum smb_conn_state state ;
   struct file *sock_file ;
   struct smb_mount_data_kernel *mnt ;
   unsigned char *temp_buf ;
   unsigned int generation ;
   pid_t conn_pid ;
   struct smb_conn_opt opt ;
   struct semaphore sem ;
   wait_queue_head_t wait ;
   __u32 packet_size ;
   unsigned char *packet ;
   unsigned short rcls ;
   unsigned short err ;
   void *data_ready ;
   struct nls_table *remote_nls ;
   struct nls_table *local_nls ;
   char *name_buf ;
   int (*convert)(char * , int , char const * , int , struct nls_table * , struct nls_table * ) ;
};
# 15 "linux-2.4.19/include/linux/hfs_fs_sb.h"
struct hfs_name;
# 15 "linux-2.4.19/include/linux/hfs_fs_sb.h"
struct hfs_name;
# 26 "linux-2.4.19/include/linux/hfs_fs_sb.h"
struct hfs_mdb;
# 26 "linux-2.4.19/include/linux/hfs_fs_sb.h"
struct hfs_sb_info {
   int magic ;
   struct hfs_mdb *s_mdb ;
   int s_quiet ;
   int s_lowercase ;
   int s_afpd ;
   int s_version ;
   int (*s_namein)(char * , struct hfs_name const * ) ;
   void (*s_nameout)(struct hfs_name * , char const * , int ) ;
   void (*s_ifill)(struct inode * , ino_t , int ) ;
   struct hfs_name const *s_reserved1 ;
   struct hfs_name const *s_reserved2 ;
   __u32 s_type ;
   __u32 s_creator ;
   umode_t s_umask ;
   uid_t s_uid ;
   gid_t s_gid ;
   char s_conv ;
};
# 13 "linux-2.4.19/include/linux/adfs_fs_sb.h"
struct adfs_discmap;
# 13 "linux-2.4.19/include/linux/adfs_fs_sb.h"
struct adfs_discmap;
# 14 "linux-2.4.19/include/linux/adfs_fs_sb.h"
struct adfs_dir_ops;
# 14 "linux-2.4.19/include/linux/adfs_fs_sb.h"
struct adfs_dir_ops;
# 19 "linux-2.4.19/include/linux/adfs_fs_sb.h"
struct adfs_sb_info {
   struct adfs_discmap *s_map ;
   struct adfs_dir_ops *s_dir ;
   uid_t s_uid ;
   gid_t s_gid ;
   umode_t s_owner_mask ;
   umode_t s_other_mask ;
   __u32 s_ids_per_zone ;
   __u32 s_idlen ;
   __u32 s_map_size ;
   unsigned long s_size ;
   int s_map2blk ;
   unsigned int s_log2sharesize ;
   unsigned int s_version ;
   unsigned int s_namelen ;
};
# 45 "linux-2.4.19/include/linux/qnx4_fs.h"
struct qnx4_inode_entry {
   char di_fname[16] ;
   qnx4_off_t di_size ;
   qnx4_xtnt_t di_first_xtnt ;
   __u32 di_xblk ;
   __s32 di_ftime ;
   __s32 di_mtime ;
   __s32 di_atime ;
   __s32 di_ctime ;
   qnx4_nxtnt_t di_num_xtnts ;
   qnx4_mode_t di_mode ;
   qnx4_muid_t di_uid ;
   qnx4_mgid_t di_gid ;
   qnx4_nlink_t di_nlink ;
   __u8 di_zero[4] ;
   qnx4_ftype_t di_type ;
   __u8 di_status ;
};
# 83 "linux-2.4.19/include/linux/qnx4_fs.h"
struct qnx4_super_block {
   struct qnx4_inode_entry RootDir ;
   struct qnx4_inode_entry Inode ;
   struct qnx4_inode_entry Boot ;
   struct qnx4_inode_entry AltBoot ;
};
# 20 "linux-2.4.19/include/linux/qnx4_fs_sb.h"
struct qnx4_sb_info {
   struct buffer_head *sb_buf ;
   struct qnx4_super_block *sb ;
   unsigned int Version ;
   struct qnx4_inode_entry *BitMap ;
};
# 38 "linux-2.4.19/include/linux/tqueue.h"
struct tq_struct {
   struct list_head list ;
   unsigned long sync ;
   void (*routine)(void * ) ;
   void *data ;
};
# 64 "linux-2.4.19/include/linux/tqueue.h"
typedef struct list_head task_queue;
# 26 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_super_block {
   __u32 s_block_count ;
   __u32 s_free_blocks ;
   __u32 s_root_block ;
   __u32 s_journal_block ;
   __u32 s_journal_dev ;
   __u32 s_orig_journal_size ;
   __u32 s_journal_trans_max ;
   __u32 s_journal_block_count ;
   __u32 s_journal_max_batch ;
   __u32 s_journal_max_commit_age ;
   __u32 s_journal_max_trans_age ;
   __u16 s_blocksize ;
   __u16 s_oid_maxsize ;
   __u16 s_oid_cursize ;
   __u16 s_state ;
   char s_magic[12] ;
   __u32 s_hash_function_code ;
   __u16 s_tree_height ;
   __u16 s_bmap_nr ;
   __u16 s_version ;
   __u16 s_reserved ;
   __u32 s_inode_generation ;
   __u32 s_flags ;
   unsigned char s_uuid[16] ;
   unsigned char s_label[16] ;
   char s_unused[88] ;
} __attribute__((__packed__)) ;
# 210 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_journal_list;
# 210 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_journal_cnode {
   struct buffer_head *bh ;
   kdev_t dev ;
   unsigned long blocknr ;
   long state ;
   struct reiserfs_journal_list *jlist ;
   struct reiserfs_journal_cnode *next ;
   struct reiserfs_journal_cnode *prev ;
   struct reiserfs_journal_cnode *hprev ;
   struct reiserfs_journal_cnode *hnext ;
};
# 222 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_bitmap_node {
   int id ;
   char *data ;
   struct list_head list ;
};
# 228 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_list_bitmap {
   struct reiserfs_journal_list *journal_list ;
   struct reiserfs_bitmap_node **bitmaps ;
};
# 252 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_journal_list {
   unsigned long j_start ;
   unsigned long j_len ;
   atomic_t j_nonzerolen ;
   atomic_t j_commit_left ;
   atomic_t j_flushing ;
   atomic_t j_commit_flushing ;
   atomic_t j_older_commits_done ;
   unsigned long j_trans_id ;
   time_t j_timestamp ;
   struct reiserfs_list_bitmap *j_list_bitmap ;
   struct buffer_head *j_commit_bh ;
   struct reiserfs_journal_cnode *j_realblock ;
   struct reiserfs_journal_cnode *j_freedlist ;
   wait_queue_head_t j_commit_wait ;
   wait_queue_head_t j_flush_wait ;
};
# 270 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_page_list;
# 270 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_page_list;
# 272 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_journal {
   struct buffer_head **j_ap_blocks ;
   struct reiserfs_journal_cnode *j_last ;
   struct reiserfs_journal_cnode *j_first ;
   long j_state ;
   unsigned long j_trans_id ;
   unsigned long j_mount_id ;
   unsigned long j_start ;
   unsigned long j_len ;
   unsigned long j_len_alloc ;
   atomic_t j_wcount ;
   unsigned long j_bcount ;
   unsigned long j_first_unflushed_offset ;
   unsigned long j_last_flush_trans_id ;
   struct buffer_head *j_header_bh ;
   struct reiserfs_page_list *j_flush_pages ;
   time_t j_trans_start_time ;
   wait_queue_head_t j_wait ;
   atomic_t j_wlock ;
   wait_queue_head_t j_join_wait ;
   atomic_t j_jlock ;
   int j_journal_list_index ;
   int j_list_bitmap_index ;
   int j_must_wait ;
   int j_next_full_flush ;
   int j_next_async_flush ;
   int j_cnode_used ;
   int j_cnode_free ;
   struct reiserfs_journal_cnode *j_cnode_free_list ;
   struct reiserfs_journal_cnode *j_cnode_free_orig ;
   int j_free_bitmap_nodes ;
   int j_used_bitmap_nodes ;
   struct list_head j_bitmap_nodes ;
   struct inode j_dummy_inode ;
   struct reiserfs_list_bitmap j_list_bitmap[5] ;
   struct reiserfs_journal_list j_journal_list[64] ;
   struct reiserfs_journal_cnode *j_hash_table[8192] ;
   struct reiserfs_journal_cnode *j_list_hash_table[8192] ;
   struct list_head j_prealloc_list ;
};
# 327 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct proc_dir_entry;
# 327 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct proc_dir_entry;
# 397 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_proc_info_data {

};
# 397 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
typedef struct reiserfs_proc_info_data reiserfs_proc_info_data_t;
# 402 "linux-2.4.19/include/linux/reiserfs_fs_sb.h"
struct reiserfs_sb_info {
   struct buffer_head *s_sbh ;
   struct reiserfs_super_block *s_rs ;
   struct buffer_head **s_ap_bitmap ;
   struct reiserfs_journal *s_journal ;
   unsigned short s_mount_state ;
   void (*end_io_handler)(struct buffer_head * , int ) ;
   __u32 (*s_hash_function)(signed char const * , int ) ;
   unsigned long s_mount_opt ;
   wait_queue_head_t s_wait ;
   atomic_t s_generation_counter ;
   unsigned long s_properties ;
   int s_kmallocs ;
   int s_disk_reads ;
   int s_disk_writes ;
   int s_fix_nodes ;
   int s_do_balance ;
   int s_unneeded_left_neighbor ;
   int s_good_search_by_key_reada ;
   int s_bmaps ;
   int s_bmaps_without_search ;
   int s_direct2indirect ;
   int s_indirect2direct ;
   int s_is_unlinked_ok ;
   reiserfs_proc_info_data_t s_proc_info_data ;
   struct proc_dir_entry *procdir ;
};
# 12 "linux-2.4.19/include/linux/bfs_fs_sb.h"
struct bfs_super_block;
# 12 "linux-2.4.19/include/linux/bfs_fs_sb.h"
struct bfs_sb_info {
   unsigned long si_blocks ;
   unsigned long si_freeb ;
   unsigned long si_freei ;
   unsigned long si_lf_ioff ;
   unsigned long si_lf_sblk ;
   unsigned long si_lf_eblk ;
   unsigned long si_lasti ;
   char *si_imap ;
   struct buffer_head *si_sbh ;
   struct bfs_super_block *si_bfs_sb ;
};
# 21 "linux-2.4.19/include/linux/udf_fs_sb.h"
#pragma pack(1)
# 30 "linux-2.4.19/include/linux/udf_fs_sb.h"
struct udf_sparing_data {
   __u16 s_packet_len ;
   struct buffer_head *s_spar_map[4] ;
};
# 36 "linux-2.4.19/include/linux/udf_fs_sb.h"
struct udf_virtual_data {
   __u32 s_num_entries ;
   __u16 s_start_offset ;
};
# 42 "linux-2.4.19/include/linux/udf_fs_sb.h"
struct udf_bitmap {
   __u32 s_extLength ;
   __u32 s_extPosition ;
   __u16 s_nr_groups ;
   struct buffer_head **s_block_bitmap ;
};
# 50 "linux-2.4.19/include/linux/udf_fs_sb.h"
union __anonunion_s_uspace_54 {
   struct udf_bitmap *s_bitmap ;
   struct inode *s_table ;
};
# 50 "linux-2.4.19/include/linux/udf_fs_sb.h"
union __anonunion_s_fspace_55 {
   struct udf_bitmap *s_bitmap ;
   struct inode *s_table ;
};
# 50 "linux-2.4.19/include/linux/udf_fs_sb.h"
union __anonunion_s_type_specific_56 {
   struct udf_sparing_data s_sparing ;
   struct udf_virtual_data s_virtual ;
};
# 50 "linux-2.4.19/include/linux/udf_fs_sb.h"
struct udf_part_map {
   union __anonunion_s_uspace_54 s_uspace ;
   union __anonunion_s_fspace_55 s_fspace ;
   __u32 s_partition_root ;
   __u32 s_partition_len ;
   __u16 s_partition_type ;
   __u16 s_partition_num ;
   union __anonunion_s_type_specific_56 s_type_specific ;
   __u32 (*s_partition_func)(struct super_block * , __u32 , __u16 , __u32 ) ;
   __u16 s_volumeseqnum ;
   __u16 s_partition_flags ;
};
# 76 "linux-2.4.19/include/linux/udf_fs_sb.h"
#pragma pack()
# 78 "linux-2.4.19/include/linux/udf_fs_sb.h"
struct udf_sb_info {
   struct udf_part_map *s_partmaps ;
   __u8 s_volident[32] ;
   __u16 s_partitions ;
   __u16 s_partition ;
   __s32 s_session ;
   __u32 s_anchor[4] ;
   __u32 s_lastblock ;
   struct buffer_head *s_lvidbh ;
   mode_t s_umask ;
   gid_t s_gid ;
   uid_t s_uid ;
   time_t s_recordtime ;
   __u16 s_serialnum ;
   __u16 s_udfrev ;
   __u32 s_flags ;
   struct nls_table *s_nls_map ;
   struct inode *s_vat ;
};
# 70 "linux-2.4.19/include/linux/ncp_mount.h"
struct ncp_mount_data_kernel {
   unsigned long flags ;
   unsigned int int_flags ;
   __kernel_uid32_t mounted_uid ;
   __kernel_pid_t wdog_pid ;
   unsigned int ncp_fd ;
   unsigned int time_out ;
   unsigned int retry_count ;
   unsigned char mounted_vol[17] ;
   __kernel_uid32_t uid ;
   __kernel_gid32_t gid ;
   __kernel_mode_t file_mode ;
   __kernel_mode_t dir_mode ;
};
# 18 "linux-2.4.19/include/linux/ncp_fs_sb.h"
struct __anonstruct_auth_57 {
   int auth_type ;
   size_t object_name_len ;
   void *object_name ;
   int object_type ;
};
# 18 "linux-2.4.19/include/linux/ncp_fs_sb.h"
struct __anonstruct_priv_58 {
   size_t len ;
   void *data ;
};
# 18 "linux-2.4.19/include/linux/ncp_fs_sb.h"
struct ncp_server {
   struct ncp_mount_data_kernel m ;
   __u8 name_space[66] ;
   struct file *ncp_filp ;
   u8 sequence ;
   u8 task ;
   u16 connection ;
   u8 completion ;
   u8 conn_status ;
   int buffer_size ;
   int reply_size ;
   int packet_size ;
   unsigned char *packet ;
   int lock ;
   struct semaphore sem ;
   int current_size ;
   int has_subfunction ;
   int ncp_reply_size ;
   int root_setuped ;
   int sign_wanted ;
   int sign_active ;
   char sign_root[8] ;
   char sign_last[16] ;
   struct __anonstruct_auth_57 auth ;
   struct __anonstruct_priv_58 priv ;
   struct nls_table *nls_vol ;
   struct nls_table *nls_io ;
   int dentry_ttl ;
   unsigned int flags ;
};
# 1 "linux-2.4.19/include/linux/usbdev_fs_sb.h"
struct usbdev_sb_info {
   struct list_head slist ;
   struct list_head ilist ;
   uid_t devuid ;
   gid_t devgid ;
   umode_t devmode ;
   uid_t busuid ;
   gid_t busgid ;
   umode_t busmode ;
   uid_t listuid ;
   gid_t listgid ;
   umode_t listmode ;
};
# 13 "linux-2.4.19/include/linux/completion.h"
struct completion {
   unsigned int done ;
   wait_queue_head_t wait ;
};
# 21 "linux-2.4.19/include/linux/jffs2_fs_sb.h"
struct mtd_info;
# 21 "linux-2.4.19/include/linux/jffs2_fs_sb.h"
struct jffs2_eraseblock;
# 21 "linux-2.4.19/include/linux/jffs2_fs_sb.h"
struct jffs2_sb_info {
   struct mtd_info *mtd ;
   __u32 highest_ino ;
   unsigned int flags ;
   spinlock_t nodelist_lock ;
   struct task_struct *gc_task ;
   struct semaphore gc_thread_start ;
   struct completion gc_thread_exit ;
   struct semaphore alloc_sem ;
   __u32 flash_size ;
   __u32 used_size ;
   __u32 dirty_size ;
   __u32 free_size ;
   __u32 erasing_size ;
   __u32 bad_size ;
   __u32 sector_size ;
   __u32 nr_free_blocks ;
   __u32 nr_erasing_blocks ;
   __u32 nr_blocks ;
   struct jffs2_eraseblock *blocks ;
   struct jffs2_eraseblock *nextblock ;
   struct jffs2_eraseblock *gcblock ;
   struct list_head clean_list ;
   struct list_head dirty_list ;
   struct list_head erasing_list ;
   struct list_head erase_pending_list ;
   struct list_head erase_complete_list ;
   struct list_head free_list ;
   struct list_head bad_list ;
   struct list_head bad_used_list ;
   spinlock_t erase_completion_lock ;
   wait_queue_head_t erase_wait ;
   struct jffs2_inode_cache *inocache_list[1] ;
   spinlock_t inocache_lock ;
};
# 711 "linux-2.4.19/include/linux/fs.h"
struct super_operations;
# 711 "linux-2.4.19/include/linux/fs.h"
struct dquot_operations;
# 711 "linux-2.4.19/include/linux/fs.h"
union __anonunion_u_59 {
   struct minix_sb_info minix_sb ;
   struct ext2_sb_info ext2_sb ;
   struct ext3_sb_info ext3_sb ;
   struct hpfs_sb_info hpfs_sb ;
   struct ntfs_sb_info ntfs_sb ;
   struct msdos_sb_info msdos_sb ;
   struct isofs_sb_info isofs_sb ;
   struct nfs_sb_info nfs_sb ;
   struct sysv_sb_info sysv_sb ;
   struct affs_sb_info affs_sb ;
   struct ufs_sb_info ufs_sb ;
   struct efs_sb_info efs_sb ;
   struct shmem_sb_info shmem_sb ;
   struct romfs_sb_info romfs_sb ;
   struct smb_sb_info smbfs_sb ;
   struct hfs_sb_info hfs_sb ;
   struct adfs_sb_info adfs_sb ;
   struct qnx4_sb_info qnx4_sb ;
   struct reiserfs_sb_info reiserfs_sb ;
   struct bfs_sb_info bfs_sb ;
   struct udf_sb_info udf_sb ;
   struct ncp_server ncpfs_sb ;
   struct usbdev_sb_info usbdevfs_sb ;
   struct jffs2_sb_info jffs2_sb ;
   struct cramfs_sb_info cramfs_sb ;
   void *generic_sbp ;
};
# 711 "linux-2.4.19/include/linux/fs.h"
struct super_block {
   struct list_head s_list ;
   kdev_t s_dev ;
   unsigned long s_blocksize ;
   unsigned char s_blocksize_bits ;
   unsigned char s_dirt ;
   unsigned long long s_maxbytes ;
   struct file_system_type *s_type ;
   struct super_operations *s_op ;
   struct dquot_operations *dq_op ;
   unsigned long s_flags ;
   unsigned long s_magic ;
   struct dentry *s_root ;
   struct rw_semaphore s_umount ;
   struct semaphore s_lock ;
   int s_count ;
   atomic_t s_active ;
   struct list_head s_dirty ;
   struct list_head s_locked_inodes ;
   struct list_head s_files ;
   struct block_device *s_bdev ;
   struct list_head s_instances ;
   struct quota_mount_options s_dquot ;
   union __anonunion_u_59 u ;
   struct semaphore s_vfs_rename_sem ;
   struct semaphore s_nfsd_free_path_sem ;
};
# 814 "linux-2.4.19/include/linux/fs.h"
struct block_device_operations {
   int (*open)(struct inode * , struct file * ) ;
   int (*release)(struct inode * , struct file * ) ;
   int (*ioctl)(struct inode * , struct file * , unsigned int , unsigned long ) ;
   int (*check_media_change)(kdev_t ) ;
   int (*revalidate)(kdev_t ) ;
   struct module *owner ;
};
# 828 "linux-2.4.19/include/linux/fs.h"
struct file_operations {
   struct module *owner ;
   loff_t (*llseek)(struct file * , loff_t , int ) ;
   ssize_t (*read)(struct file * , char * , size_t , loff_t * ) ;
   ssize_t (*write)(struct file * , char const * , size_t , loff_t * ) ;
   int (*readdir)(struct file * , void * , int (*)(void * , char const * , int ,
                                                   loff_t , ino_t , unsigned int ) ) ;
   unsigned int (*poll)(struct file * , struct poll_table_struct * ) ;
   int (*ioctl)(struct inode * , struct file * , unsigned int , unsigned long ) ;
   int (*mmap)(struct file * , struct vm_area_struct * ) ;
   int (*open)(struct inode * , struct file * ) ;
   int (*flush)(struct file * ) ;
   int (*release)(struct inode * , struct file * ) ;
   int (*fsync)(struct file * , struct dentry * , int datasync ) ;
   int (*fasync)(int , struct file * , int ) ;
   int (*lock)(struct file * , int , struct file_lock * ) ;
   ssize_t (*readv)(struct file * , struct iovec const * , unsigned long , loff_t * ) ;
   ssize_t (*writev)(struct file * , struct iovec const * , unsigned long , loff_t * ) ;
   ssize_t (*sendpage)(struct file * , struct page * , int , size_t , loff_t * ,
                       int ) ;
   unsigned long (*get_unmapped_area)(struct file * , unsigned long , unsigned long ,
                                      unsigned long , unsigned long ) ;
};
# 849 "linux-2.4.19/include/linux/fs.h"
struct inode_operations {
   int (*create)(struct inode * , struct dentry * , int ) ;
   struct dentry *(*lookup)(struct inode * , struct dentry * ) ;
   int (*link)(struct dentry * , struct inode * , struct dentry * ) ;
   int (*unlink)(struct inode * , struct dentry * ) ;
   int (*symlink)(struct inode * , struct dentry * , char const * ) ;
   int (*mkdir)(struct inode * , struct dentry * , int ) ;
   int (*rmdir)(struct inode * , struct dentry * ) ;
   int (*mknod)(struct inode * , struct dentry * , int , int ) ;
   int (*rename)(struct inode * , struct dentry * , struct inode * , struct dentry * ) ;
   int (*readlink)(struct dentry * , char * , int ) ;
   int (*follow_link)(struct dentry * , struct nameidata * ) ;
   void (*truncate)(struct inode * ) ;
   int (*permission)(struct inode * , int ) ;
   int (*revalidate)(struct dentry * ) ;
   int (*setattr)(struct dentry * , struct iattr * ) ;
   int (*getattr)(struct dentry * , struct iattr * ) ;
};
# 869 "linux-2.4.19/include/linux/fs.h"
struct seq_file;
# 869 "linux-2.4.19/include/linux/fs.h"
struct seq_file;
# 875 "linux-2.4.19/include/linux/fs.h"
struct super_operations {
   void (*read_inode)(struct inode * ) ;
   void (*read_inode2)(struct inode * , void * ) ;
   void (*dirty_inode)(struct inode * ) ;
   void (*write_inode)(struct inode * , int ) ;
   void (*put_inode)(struct inode * ) ;
   void (*delete_inode)(struct inode * ) ;
   void (*put_super)(struct super_block * ) ;
   void (*write_super)(struct super_block * ) ;
   void (*write_super_lockfs)(struct super_block * ) ;
   void (*unlockfs)(struct super_block * ) ;
   int (*statfs)(struct super_block * , struct statfs * ) ;
   int (*remount_fs)(struct super_block * , int * , char * ) ;
   void (*clear_inode)(struct inode * ) ;
   void (*umount_begin)(struct super_block * ) ;
   struct dentry *(*fh_to_dentry)(struct super_block *sb , __u32 *fh , int len , int fhtype ,
                                  int parent ) ;
   int (*dentry_to_fh)(struct dentry * , __u32 *fh , int *lenp , int need_parent ) ;
   int (*show_options)(struct seq_file * , struct vfsmount * ) ;
};
# 951 "linux-2.4.19/include/linux/fs.h"
struct dquot_operations {
   void (*initialize)(struct inode * , short ) ;
   void (*drop)(struct inode * ) ;
   int (*alloc_block)(struct inode * , unsigned long , char ) ;
   int (*alloc_inode)(struct inode const * , unsigned long ) ;
   void (*free_block)(struct inode * , unsigned long ) ;
   void (*free_inode)(struct inode const * , unsigned long ) ;
   int (*transfer)(struct inode * , struct iattr * ) ;
};
# 961 "linux-2.4.19/include/linux/fs.h"
struct file_system_type {
   char const *name ;
   int fs_flags ;
   struct super_block *(*read_super)(struct super_block * , void * , int ) ;
   struct module *owner ;
   struct file_system_type *next ;
   struct list_head fs_supers ;
};
# 55 "linux-2.4.19/include/linux/capability.h"
typedef __u32 kernel_cap_t;
# 22 "linux-2.4.19/include/linux/binfmts.h"
struct linux_binprm {
   char buf[128] ;
   struct page *page[32] ;
   unsigned long p ;
   int sh_bang ;
   struct file *file ;
   int e_uid ;
   int e_gid ;
   kernel_cap_t cap_inheritable ;
   kernel_cap_t cap_permitted ;
   kernel_cap_t cap_effective ;
   int argc ;
   int envc ;
   char *filename ;
   unsigned long loader ;
   unsigned long exec ;
};
# 39 "linux-2.4.19/include/linux/binfmts.h"
struct linux_binfmt {
   struct linux_binfmt *next ;
   struct module *module ;
   int (*load_binary)(struct linux_binprm * , struct pt_regs *regs ) ;
   int (*load_shlib)(struct file * ) ;
   int (*core_dump)(long signr , struct pt_regs *regs , struct file *file ) ;
   unsigned long min_coredump ;
};
# 4 "linux-2.4.19/include/linux/times.h"
struct tms {
   clock_t tms_utime ;
   clock_t tms_stime ;
   clock_t tms_cutime ;
   clock_t tms_cstime ;
};
# 100 "linux-2.4.19/include/linux/rbtree.h"
struct rb_node_s {
   struct rb_node_s *rb_parent ;
   int rb_color ;
   struct rb_node_s *rb_right ;
   struct rb_node_s *rb_left ;
};
# 100 "linux-2.4.19/include/linux/rbtree.h"
typedef struct rb_node_s rb_node_t;
# 111 "linux-2.4.19/include/linux/rbtree.h"
struct rb_root_s {
   struct rb_node_s *rb_node ;
};
# 111 "linux-2.4.19/include/linux/rbtree.h"
typedef struct rb_root_s rb_root_t;
# 8 "linux-2.4.19/include/asm/mmu.h"
struct __anonstruct_mm_context_t_63 {
   void *segments ;
   unsigned long cpuvalid ;
};
# 8 "linux-2.4.19/include/asm/mmu.h"
typedef struct __anonstruct_mm_context_t_63 mm_context_t;
# 6 "linux-2.4.19/include/asm/termbits.h"
typedef unsigned char cc_t;
# 8 "linux-2.4.19/include/asm/termbits.h"
typedef unsigned int tcflag_t;
# 11 "linux-2.4.19/include/asm/termbits.h"
struct termios {
   tcflag_t c_iflag ;
   tcflag_t c_oflag ;
   tcflag_t c_cflag ;
   tcflag_t c_lflag ;
   cc_t c_line ;
   cc_t c_cc[19] ;
};
# 7 "linux-2.4.19/include/asm/termios.h"
struct winsize {
   unsigned short ws_row ;
   unsigned short ws_col ;
   unsigned short ws_xpixel ;
   unsigned short ws_ypixel ;
};
# 120 "linux-2.4.19/include/linux/tty_driver.h"
struct tty_struct;
# 120 "linux-2.4.19/include/linux/tty_driver.h"
struct tty_driver {
   int magic ;
   char const *driver_name ;
   char const *name ;
   int name_base ;
   short major ;
   short minor_start ;
   short num ;
   short type ;
   short subtype ;
   struct termios init_termios ;
   int flags ;
   int *refcount ;
   struct proc_dir_entry *proc_entry ;
   struct tty_driver *other ;
   struct tty_struct **table ;
   struct termios **termios ;
   struct termios **termios_locked ;
   void *driver_state ;
   int (*open)(struct tty_struct *tty , struct file *filp ) ;
   void (*close)(struct tty_struct *tty , struct file *filp ) ;
   int (*write)(struct tty_struct *tty , int from_user , unsigned char const *buf ,
                int count ) ;
   void (*put_char)(struct tty_struct *tty , unsigned char ch ) ;
   void (*flush_chars)(struct tty_struct *tty ) ;
   int (*write_room)(struct tty_struct *tty ) ;
   int (*chars_in_buffer)(struct tty_struct *tty ) ;
   int (*ioctl)(struct tty_struct *tty , struct file *file , unsigned int cmd , unsigned long arg ) ;
   void (*set_termios)(struct tty_struct *tty , struct termios *old ) ;
   void (*throttle)(struct tty_struct *tty ) ;
   void (*unthrottle)(struct tty_struct *tty ) ;
   void (*stop)(struct tty_struct *tty ) ;
   void (*start)(struct tty_struct *tty ) ;
   void (*hangup)(struct tty_struct *tty ) ;
   void (*break_ctl)(struct tty_struct *tty , int state ) ;
   void (*flush_buffer)(struct tty_struct *tty ) ;
   void (*set_ldisc)(struct tty_struct *tty ) ;
   void (*wait_until_sent)(struct tty_struct *tty , int timeout ) ;
   void (*send_xchar)(struct tty_struct *tty , char ch ) ;
   int (*read_proc)(char *page , char **start , off_t off , int count , int *eof ,
                    void *data ) ;
   int (*write_proc)(struct file *file , char const *buffer , unsigned long count ,
                     void *data ) ;
   struct tty_driver *next ;
   struct tty_driver *prev ;
};
# 103 "linux-2.4.19/include/linux/tty_ldisc.h"
struct tty_ldisc {
   int magic ;
   char *name ;
   int num ;
   int flags ;
   int (*open)(struct tty_struct * ) ;
   void (*close)(struct tty_struct * ) ;
   void (*flush_buffer)(struct tty_struct *tty ) ;
   ssize_t (*chars_in_buffer)(struct tty_struct *tty ) ;
   ssize_t (*read)(struct tty_struct *tty , struct file *file , unsigned char *buf ,
                   size_t nr ) ;
   ssize_t (*write)(struct tty_struct *tty , struct file *file , unsigned char const *buf ,
                    size_t nr ) ;
   int (*ioctl)(struct tty_struct *tty , struct file *file , unsigned int cmd , unsigned long arg ) ;
   void (*set_termios)(struct tty_struct *tty , struct termios *old ) ;
   unsigned int (*poll)(struct tty_struct * , struct file * , struct poll_table_struct * ) ;
   void (*receive_buf)(struct tty_struct * , unsigned char const *cp , char *fp ,
                       int count ) ;
   int (*receive_room)(struct tty_struct * ) ;
   void (*write_wakeup)(struct tty_struct * ) ;
};
# 139 "linux-2.4.19/include/linux/tty.h"
struct tty_flip_buffer {
   struct tq_struct tqueue ;
   struct semaphore pty_sem ;
   char *char_buf_ptr ;
   unsigned char *flag_buf_ptr ;
   int count ;
   int buf_num ;
   unsigned char char_buf[1024] ;
   char flag_buf[1024] ;
   unsigned char slop[4] ;
};
# 259 "linux-2.4.19/include/linux/tty.h"
struct tty_struct {
   int magic ;
   struct tty_driver driver ;
   struct tty_ldisc ldisc ;
   struct termios *termios ;
   struct termios *termios_locked ;
   int pgrp ;
   int session ;
   kdev_t device ;
   unsigned long flags ;
   int count ;
   struct winsize winsize ;
   unsigned char stopped : 1 ;
   unsigned char hw_stopped : 1 ;
   unsigned char flow_stopped : 1 ;
   unsigned char packet : 1 ;
   unsigned char low_latency : 1 ;
   unsigned char warned : 1 ;
   unsigned char ctrl_status ;
   struct tty_struct *link ;
   struct fasync_struct *fasync ;
   struct tty_flip_buffer flip ;
   int max_flip_cnt ;
   int alt_speed ;
   wait_queue_head_t write_wait ;
   wait_queue_head_t read_wait ;
   struct tq_struct tq_hangup ;
   void *disc_data ;
   void *driver_data ;
   struct list_head tty_files ;
   unsigned int column ;
   unsigned char lnext : 1 ;
   unsigned char erasing : 1 ;
   unsigned char raw : 1 ;
   unsigned char real_raw : 1 ;
   unsigned char icanon : 1 ;
   unsigned char closing : 1 ;
   unsigned short minimum_to_wake ;
   unsigned int overrun_time ;
   int num_overrun ;
   unsigned long process_char_map[(int )(256U / (8U * sizeof(unsigned long )))] ;
   char *read_buf ;
   int read_head ;
   int read_tail ;
   int read_cnt ;
   unsigned long read_flags[(int )(4096U / (8U * sizeof(unsigned long )))] ;
   int canon_data ;
   unsigned long canon_head ;
   unsigned int canon_column ;
   struct semaphore atomic_read ;
   struct semaphore atomic_write ;
   spinlock_t read_lock ;
   struct tq_struct SAK_tq ;
};
# 57 "linux-2.4.19/include/linux/ipc.h"
struct kern_ipc_perm {
   key_t key ;
   uid_t uid ;
   gid_t gid ;
   uid_t cuid ;
   gid_t cgid ;
   mode_t mode ;
   unsigned long seq ;
};
# 23 "linux-2.4.19/include/linux/sem.h"
struct sem;
# 23 "linux-2.4.19/include/linux/sem.h"
struct sem_queue;
# 23 "linux-2.4.19/include/linux/sem.h"
struct sem_undo;
# 38 "linux-2.4.19/include/linux/sem.h"
struct sembuf {
   unsigned short sem_num ;
   short sem_op ;
   short sem_flg ;
};
# 82 "linux-2.4.19/include/linux/sem.h"
struct sem {
   int semval ;
   int sempid ;
};
# 88 "linux-2.4.19/include/linux/sem.h"
struct sem_array {
   struct kern_ipc_perm sem_perm ;
   time_t sem_otime ;
   time_t sem_ctime ;
   struct sem *sem_base ;
   struct sem_queue *sem_pending ;
   struct sem_queue **sem_pending_last ;
   struct sem_undo *undo ;
   unsigned long sem_nsems ;
};
# 100 "linux-2.4.19/include/linux/sem.h"
struct sem_queue {
   struct sem_queue *next ;
   struct sem_queue **prev ;
   struct task_struct *sleeper ;
   struct sem_undo *undo ;
   int pid ;
   int status ;
   struct sem_array *sma ;
   int id ;
   struct sembuf *sops ;
   int nsops ;
   int alter ;
};
# 117 "linux-2.4.19/include/linux/sem.h"
struct sem_undo {
   struct sem_undo *proc_next ;
   struct sem_undo *id_next ;
   int semid ;
   short *semadj ;
};
# 7 "linux-2.4.19/include/asm/signal.h"
struct siginfo;
# 7 "linux-2.4.19/include/asm/signal.h"
struct siginfo;
# 19 "linux-2.4.19/include/asm/signal.h"
struct __anonstruct_sigset_t_116 {
   unsigned long sig[2] ;
};
# 19 "linux-2.4.19/include/asm/signal.h"
typedef struct __anonstruct_sigset_t_116 sigset_t;
# 143 "linux-2.4.19/include/asm/signal.h"
struct sigaction {
   void (*sa_handler)(int ) ;
   unsigned long sa_flags ;
   void (*sa_restorer)(void) ;
   sigset_t sa_mask ;
};
# 150 "linux-2.4.19/include/asm/signal.h"
struct k_sigaction {
   struct sigaction sa ;
};
# 8 "linux-2.4.19/include/asm/siginfo.h"
union sigval {
   int sival_int ;
   void *sival_ptr ;
};
# 8 "linux-2.4.19/include/asm/siginfo.h"
typedef union sigval sigval_t;
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__kill_118 {
   pid_t _pid ;
   uid_t _uid ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__timer_119 {
   unsigned int _timer1 ;
   unsigned int _timer2 ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__rt_120 {
   pid_t _pid ;
   uid_t _uid ;
   sigval_t _sigval ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__sigchld_121 {
   pid_t _pid ;
   uid_t _uid ;
   int _status ;
   clock_t _utime ;
   clock_t _stime ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__sigfault_122 {
   void *_addr ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct __anonstruct__sigpoll_123 {
   int _band ;
   int _fd ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
union __anonunion__sifields_117 {
   int _pad[(int )(128U / sizeof(int ) - 3U)] ;
   struct __anonstruct__kill_118 _kill ;
   struct __anonstruct__timer_119 _timer ;
   struct __anonstruct__rt_120 _rt ;
   struct __anonstruct__sigchld_121 _sigchld ;
   struct __anonstruct__sigfault_122 _sigfault ;
   struct __anonstruct__sigpoll_123 _sigpoll ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
struct siginfo {
   int si_signo ;
   int si_errno ;
   int si_code ;
   union __anonunion__sifields_117 _sifields ;
};
# 16 "linux-2.4.19/include/asm/siginfo.h"
typedef struct siginfo siginfo_t;
# 12 "linux-2.4.19/include/linux/signal.h"
struct sigqueue {
   struct sigqueue *next ;
   siginfo_t info ;
};
# 17 "linux-2.4.19/include/linux/signal.h"
struct sigpending {
   struct sigqueue *head ;
   struct sigqueue **tail ;
   sigset_t signal ;
};
# 5 "linux-2.4.19/include/linux/fs_struct.h"
struct fs_struct {
   atomic_t count ;
   rwlock_t lock ;
   int umask ;
   struct dentry *root ;
   struct dentry *pwd ;
   struct dentry *altroot ;
   struct vfsmount *rootmnt ;
   struct vfsmount *pwdmnt ;
   struct vfsmount *altrootmnt ;
};
# 30 "linux-2.4.19/include/linux/sched.h"
struct exec_domain;
# 30 "linux-2.4.19/include/linux/sched.h"
struct exec_domain;
# 40 "linux-2.4.19/include/linux/resource.h"
struct rlimit {
   unsigned long rlim_cur ;
   unsigned long rlim_max ;
};
# 132 "linux-2.4.19/include/linux/sched.h"
struct completion;
# 172 "linux-2.4.19/include/linux/sched.h"
struct namespace;
# 172 "linux-2.4.19/include/linux/sched.h"
struct namespace;
# 176 "linux-2.4.19/include/linux/sched.h"
struct files_struct {
   atomic_t count ;
   rwlock_t file_lock ;
   int max_fds ;
   int max_fdset ;
   int next_fd ;
   struct file **fd ;
   fd_set *close_on_exec ;
   fd_set *open_fds ;
   fd_set close_on_exec_init ;
   fd_set open_fds_init ;
   struct file *fd_array[32] ;
};
# 210 "linux-2.4.19/include/linux/sched.h"
struct mm_struct {
   struct vm_area_struct *mmap ;
   rb_root_t mm_rb ;
   struct vm_area_struct *mmap_cache ;
   pgd_t *pgd ;
   atomic_t mm_users ;
   atomic_t mm_count ;
   int map_count ;
   struct rw_semaphore mmap_sem ;
   spinlock_t page_table_lock ;
   struct list_head mmlist ;
   unsigned long start_code ;
   unsigned long end_code ;
   unsigned long start_data ;
   unsigned long end_data ;
   unsigned long start_brk ;
   unsigned long brk ;
   unsigned long start_stack ;
   unsigned long arg_start ;
   unsigned long arg_end ;
   unsigned long env_start ;
   unsigned long env_end ;
   unsigned long rss ;
   unsigned long total_vm ;
   unsigned long locked_vm ;
   unsigned long def_flags ;
   unsigned long cpu_vm_mask ;
   unsigned long swap_address ;
   unsigned int dumpable : 1 ;
   mm_context_t context ;
};
# 253 "linux-2.4.19/include/linux/sched.h"
struct signal_struct {
   atomic_t count ;
   struct k_sigaction action[64] ;
   spinlock_t siglock ;
};
# 269 "linux-2.4.19/include/linux/sched.h"
struct user_struct {
   atomic_t __count ;
   atomic_t processes ;
   atomic_t files ;
   struct user_struct *next ;
   struct user_struct **pprev ;
   uid_t uid ;
};
# 287 "linux-2.4.19/include/linux/sched.h"
struct task_struct {
   long volatile state ;
   unsigned long flags ;
   int sigpending ;
   mm_segment_t addr_limit ;
   struct exec_domain *exec_domain ;
   long volatile need_resched ;
   unsigned long ptrace ;
   int lock_depth ;
   long counter ;
   long nice ;
   unsigned long policy ;
   struct mm_struct *mm ;
   int processor ;
   unsigned long cpus_runnable ;
   unsigned long cpus_allowed ;
   struct list_head run_list ;
   unsigned long sleep_time ;
   struct task_struct *next_task ;
   struct task_struct *prev_task ;
   struct mm_struct *active_mm ;
   struct list_head local_pages ;
   unsigned int allocation_order ;
   unsigned int nr_local_pages ;
   struct linux_binfmt *binfmt ;
   int exit_code ;
   int exit_signal ;
   int pdeath_signal ;
   unsigned long personality ;
   int did_exec : 1 ;
   pid_t pid ;
   pid_t pgrp ;
   pid_t tty_old_pgrp ;
   pid_t session ;
   pid_t tgid ;
   int leader ;
   struct task_struct *p_opptr ;
   struct task_struct *p_pptr ;
   struct task_struct *p_cptr ;
   struct task_struct *p_ysptr ;
   struct task_struct *p_osptr ;
   struct list_head thread_group ;
   struct task_struct *pidhash_next ;
   struct task_struct **pidhash_pprev ;
   wait_queue_head_t wait_chldexit ;
   struct completion *vfork_done ;
   unsigned long rt_priority ;
   unsigned long it_real_value ;
   unsigned long it_prof_value ;
   unsigned long it_virt_value ;
   unsigned long it_real_incr ;
   unsigned long it_prof_incr ;
   unsigned long it_virt_incr ;
   struct timer_list real_timer ;
   struct tms times ;
   unsigned long start_time ;
   long per_cpu_utime[32] ;
   long per_cpu_stime[32] ;
   unsigned long min_flt ;
   unsigned long maj_flt ;
   unsigned long nswap ;
   unsigned long cmin_flt ;
   unsigned long cmaj_flt ;
   unsigned long cnswap ;
   int swappable : 1 ;
   uid_t uid ;
   uid_t euid ;
   uid_t suid ;
   uid_t fsuid ;
   gid_t gid ;
   gid_t egid ;
   gid_t sgid ;
   gid_t fsgid ;
   int ngroups ;
   gid_t groups[32] ;
   kernel_cap_t cap_effective ;
   kernel_cap_t cap_inheritable ;
   kernel_cap_t cap_permitted ;
   int keep_capabilities : 1 ;
   struct user_struct *user ;
   struct rlimit rlim[11] ;
   unsigned short used_math ;
   char comm[16] ;
   int link_count ;
   int total_link_count ;
   struct tty_struct *tty ;
   unsigned int locks ;
   struct sem_undo *semundo ;
   struct sem_queue *semsleeping ;
   struct thread_struct thread ;
   struct fs_struct *fs ;
   struct files_struct *files ;
   struct namespace *namespace ;
   spinlock_t sigmask_lock ;
   struct signal_struct *sig ;
   sigset_t blocked ;
   struct sigpending pending ;
   unsigned long sas_ss_sp ;
   size_t sas_ss_size ;
   int (*notifier)(void *priv ) ;
   void *notifier_data ;
   sigset_t *notifier_mask ;
   u32 parent_exec_id ;
   u32 self_exec_id ;
   spinlock_t alloc_lock ;
   void *journal_info ;
};
# 4 "linux-2.4.19/include/asm/current.h"
struct task_struct;
# 153 "linux-2.4.19/include/linux/mmzone.h"
struct page;
# 100 "linux-2.4.19/include/linux/swap.h"
struct task_struct;
# 101 "linux-2.4.19/include/linux/swap.h"
struct vm_area_struct;
# 44 "linux-2.4.19/include/linux/mm.h"
struct vm_operations_struct;
# 44 "linux-2.4.19/include/linux/mm.h"
struct vm_area_struct {
   struct mm_struct *vm_mm ;
   unsigned long vm_start ;
   unsigned long vm_end ;
   struct vm_area_struct *vm_next ;
   pgprot_t vm_page_prot ;
   unsigned long vm_flags ;
   rb_node_t vm_rb ;
   struct vm_area_struct *vm_next_share ;
   struct vm_area_struct **vm_pprev_share ;
   struct vm_operations_struct *vm_ops ;
   unsigned long vm_pgoff ;
   struct file *vm_file ;
   unsigned long vm_raend ;
   void *vm_private_data ;
};
# 131 "linux-2.4.19/include/linux/mm.h"
struct vm_operations_struct {
   void (*open)(struct vm_area_struct *area ) ;
   void (*close)(struct vm_area_struct *area ) ;
   struct page *(*nopage)(struct vm_area_struct *area , unsigned long address , int unused ) ;
};
# 152 "linux-2.4.19/include/linux/mm.h"
struct page {
   struct list_head list ;
   struct address_space *mapping ;
   unsigned long index ;
   struct page *next_hash ;
   atomic_t count ;
   unsigned long flags ;
   struct list_head lru ;
   struct page **pprev_hash ;
   struct buffer_head *buffers ;
};
# 47 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
struct devfs_entry;
# 47 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
typedef struct devfs_entry *devfs_handle_t;
# 61 "linux-2.4.19/include/linux/genhd.h"
struct hd_struct {
   unsigned long start_sect ;
   unsigned long nr_sects ;
   devfs_handle_t de ;
   int number ;
   unsigned int ios_in_flight ;
   unsigned int io_ticks ;
   unsigned int last_idle_time ;
   unsigned int last_queue_change ;
   unsigned int aveq ;
   unsigned int rd_ios ;
   unsigned int rd_merges ;
   unsigned int rd_ticks ;
   unsigned int rd_sectors ;
   unsigned int wr_ios ;
   unsigned int wr_merges ;
   unsigned int wr_ticks ;
   unsigned int wr_sectors ;
};
# 86 "linux-2.4.19/include/linux/genhd.h"
struct gendisk {
   int major ;
   char const *major_name ;
   int minor_shift ;
   int max_p ;
   struct hd_struct *part ;
   int *sizes ;
   int nr_real ;
   void *real_devices ;
   struct gendisk *next ;
   struct block_device_operations *fops ;
   devfs_handle_t *de_arr ;
   char *flags ;
};
# 272 "linux-2.4.19/include/linux/genhd.h"
struct request;
# 272 "linux-2.4.19/include/linux/genhd.h"
struct request;
# 10 "linux-2.4.19/include/linux/blkdev.h"
struct request_queue;
# 10 "linux-2.4.19/include/linux/blkdev.h"
struct request_queue;
# 11 "linux-2.4.19/include/linux/blkdev.h"
typedef struct request_queue request_queue_t;
# 12 "linux-2.4.19/include/linux/blkdev.h"
struct elevator_s;
# 12 "linux-2.4.19/include/linux/blkdev.h"
struct elevator_s;
# 13 "linux-2.4.19/include/linux/blkdev.h"
typedef struct elevator_s elevator_t;
# 19 "linux-2.4.19/include/linux/blkdev.h"
struct request {
   struct list_head queue ;
   int elevator_sequence ;
   int volatile rq_status ;
   kdev_t rq_dev ;
   int cmd ;
   int errors ;
   unsigned long start_time ;
   unsigned long sector ;
   unsigned long nr_sectors ;
   unsigned long hard_sector ;
   unsigned long hard_nr_sectors ;
   unsigned int nr_segments ;
   unsigned int nr_hw_segments ;
   unsigned long current_nr_sectors ;
   void *special ;
   char *buffer ;
   struct completion *waiting ;
   struct buffer_head *bh ;
   struct buffer_head *bhtail ;
   request_queue_t *q ;
};
# 8 "linux-2.4.19/include/linux/elevator.h"
typedef int elevator_merge_fn(request_queue_t * , struct request ** , struct list_head * ,
                              struct buffer_head * , int , int );
# 11 "linux-2.4.19/include/linux/elevator.h"
typedef void elevator_merge_cleanup_fn(request_queue_t * , struct request * , int );
# 13 "linux-2.4.19/include/linux/elevator.h"
typedef void elevator_merge_req_fn(struct request * , struct request * );
# 15 "linux-2.4.19/include/linux/elevator.h"
struct elevator_s {
   int read_latency ;
   int write_latency ;
   elevator_merge_fn *elevator_merge_fn ;
   elevator_merge_cleanup_fn *elevator_merge_cleanup_fn ;
   elevator_merge_req_fn *elevator_merge_req_fn ;
   unsigned int queue_ID ;
};
# 50 "linux-2.4.19/include/linux/blkdev.h"
typedef int merge_request_fn(request_queue_t *q , struct request *req , struct buffer_head *bh ,
                             int );
# 54 "linux-2.4.19/include/linux/blkdev.h"
typedef int merge_requests_fn(request_queue_t *q , struct request *req , struct request *req2 ,
                              int );
# 58 "linux-2.4.19/include/linux/blkdev.h"
typedef void request_fn_proc(request_queue_t *q );
# 59 "linux-2.4.19/include/linux/blkdev.h"
typedef request_queue_t *queue_proc(kdev_t dev );
# 60 "linux-2.4.19/include/linux/blkdev.h"
typedef int make_request_fn(request_queue_t *q , int rw , struct buffer_head *bh );
# 61 "linux-2.4.19/include/linux/blkdev.h"
typedef void plug_device_fn(request_queue_t *q , kdev_t device );
# 70 "linux-2.4.19/include/linux/blkdev.h"
struct request_list {
   unsigned int count ;
   struct list_head free ;
};
# 75 "linux-2.4.19/include/linux/blkdev.h"
struct request_queue {
   struct request_list rq[2] ;
   int nr_requests ;
   int batch_requests ;
   struct list_head queue_head ;
   elevator_t elevator ;
   request_fn_proc *request_fn ;
   merge_request_fn *back_merge_fn ;
   merge_request_fn *front_merge_fn ;
   merge_requests_fn *merge_requests_fn ;
   make_request_fn *make_request_fn ;
   plug_device_fn *plug_device_fn ;
   void *queuedata ;
   struct tq_struct plug_tq ;
   char plugged ;
   char head_active ;
   spinlock_t queue_lock ;
   wait_queue_head_t wait_for_requests[2] ;
};
# 138 "linux-2.4.19/include/linux/blkdev.h"
struct blk_dev_struct {
   request_queue_t request_queue ;
   queue_proc *queue ;
   void *data ;
};
# 324 "linux-2.4.19/include/linux/hdreg.h"
struct hd_geometry {
   unsigned char heads ;
   unsigned char sectors ;
   unsigned short cylinders ;
   unsigned long start ;
};
# 12 "linux-2.4.19/include/linux/slab.h"
struct kmem_cache_s;
# 12 "linux-2.4.19/include/linux/slab.h"
typedef struct kmem_cache_s kmem_cache_t;
# 47 "linux-2.4.19/include/linux/proc_fs.h"
typedef int read_proc_t(char *page , char **start , off_t off , int count , int *eof ,
                        void *data );
# 49 "linux-2.4.19/include/linux/proc_fs.h"
typedef int write_proc_t(struct file *file , char const *buffer , unsigned long count ,
                         void *data );
# 51 "linux-2.4.19/include/linux/proc_fs.h"
typedef int get_info_t(char * , char ** , off_t , int );
# 53 "linux-2.4.19/include/linux/proc_fs.h"
struct proc_dir_entry {
   unsigned short low_ino ;
   unsigned short namelen ;
   char const *name ;
   mode_t mode ;
   nlink_t nlink ;
   uid_t uid ;
   gid_t gid ;
   unsigned long size ;
   struct inode_operations *proc_iops ;
   struct file_operations *proc_fops ;
   get_info_t *get_info ;
   struct module *owner ;
   struct proc_dir_entry *next ;
   struct proc_dir_entry *parent ;
   struct proc_dir_entry *subdir ;
   void *data ;
   read_proc_t *read_proc ;
   write_proc_t *write_proc ;
   atomic_t count ;
   int deleted ;
   kdev_t rdev ;
};
# 120 "linux-2.4.19/include/linux/proc_fs.h"
struct tty_driver;
# 103 "linux-2.4.19/include/linux/interrupt.h"
struct tasklet_struct {
   struct tasklet_struct *next ;
   unsigned long state ;
   atomic_t count ;
   void (*func)(unsigned long ) ;
   unsigned long data ;
};
# 93 "linux-2.4.19/include/linux/ip.h"
struct ip_options {
   __u32 faddr ;
   unsigned char optlen ;
   unsigned char srr ;
   unsigned char rr ;
   unsigned char ts ;
   unsigned char is_setbyuser : 1 ;
   unsigned char is_data : 1 ;
   unsigned char is_strictroute : 1 ;
   unsigned char srr_is_hit : 1 ;
   unsigned char is_changed : 1 ;
   unsigned char rr_needaddr : 1 ;
   unsigned char ts_needtime : 1 ;
   unsigned char ts_needaddr : 1 ;
   unsigned char router_alert ;
   unsigned char __pad1 ;
   unsigned char __pad2 ;
   unsigned char __data[0] ;
};
# 116 "linux-2.4.19/include/linux/ip.h"
struct iphdr {
   __u8 ihl : 4 ;
   __u8 version : 4 ;
   __u8 tos ;
   __u16 tot_len ;
   __u16 id ;
   __u16 frag_off ;
   __u8 ttl ;
   __u8 protocol ;
   __u16 check ;
   __u32 saddr ;
   __u32 daddr ;
};
# 61 "linux-2.4.19/include/linux/if.h"
struct ifmap {
   unsigned long mem_start ;
   unsigned long mem_end ;
   unsigned short base_addr ;
   unsigned char irq ;
   unsigned char dma ;
   unsigned char port ;
};
# 79 "linux-2.4.19/include/linux/if.h"
union __anonunion_ifr_ifrn_137 {
   char ifrn_name[16] ;
};
# 79 "linux-2.4.19/include/linux/if.h"
union __anonunion_ifr_ifru_138 {
   struct sockaddr ifru_addr ;
   struct sockaddr ifru_dstaddr ;
   struct sockaddr ifru_broadaddr ;
   struct sockaddr ifru_netmask ;
   struct sockaddr ifru_hwaddr ;
   short ifru_flags ;
   int ifru_ivalue ;
   int ifru_mtu ;
   struct ifmap ifru_map ;
   char ifru_slave[16] ;
   char ifru_newname[16] ;
   char *ifru_data ;
};
# 79 "linux-2.4.19/include/linux/if.h"
struct ifreq {
   union __anonunion_ifr_ifrn_137 ifr_ifrn ;
   union __anonunion_ifr_ifru_138 ifr_ifru ;
};
# 93 "linux-2.4.19/include/linux/if_ether.h"
struct ethhdr {
   unsigned char h_dest[6] ;
   unsigned char h_source[6] ;
   unsigned short h_proto ;
};
# 43 "linux-2.4.19/include/linux/netdevice.h"
struct vlan_group;
# 43 "linux-2.4.19/include/linux/netdevice.h"
struct vlan_group;
# 97 "linux-2.4.19/include/linux/netdevice.h"
struct net_device_stats {
   unsigned long rx_packets ;
   unsigned long tx_packets ;
   unsigned long rx_bytes ;
   unsigned long tx_bytes ;
   unsigned long rx_errors ;
   unsigned long tx_errors ;
   unsigned long rx_dropped ;
   unsigned long tx_dropped ;
   unsigned long multicast ;
   unsigned long collisions ;
   unsigned long rx_length_errors ;
   unsigned long rx_over_errors ;
   unsigned long rx_crc_errors ;
   unsigned long rx_frame_errors ;
   unsigned long rx_fifo_errors ;
   unsigned long rx_missed_errors ;
   unsigned long tx_aborted_errors ;
   unsigned long tx_carrier_errors ;
   unsigned long tx_fifo_errors ;
   unsigned long tx_heartbeat_errors ;
   unsigned long tx_window_errors ;
   unsigned long rx_compressed ;
   unsigned long tx_compressed ;
};
# 97 "linux-2.4.19/include/linux/skbuff.h"
struct sk_buff;
# 97 "linux-2.4.19/include/linux/skbuff.h"
struct sk_buff_head {
   struct sk_buff *next ;
   struct sk_buff *prev ;
   __u32 qlen ;
   spinlock_t lock ;
};
# 106 "linux-2.4.19/include/linux/skbuff.h"
struct sk_buff;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct net_device;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct tcphdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct udphdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct icmphdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct igmphdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct spxhdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
union __anonunion_h_141 {
   struct tcphdr *th ;
   struct udphdr *uh ;
   struct icmphdr *icmph ;
   struct igmphdr *igmph ;
   struct iphdr *ipiph ;
   struct spxhdr *spxh ;
   unsigned char *raw ;
};
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct ipv6hdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct arphdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct ipxhdr;
# 129 "linux-2.4.19/include/linux/skbuff.h"
union __anonunion_nh_142 {
   struct iphdr *iph ;
   struct ipv6hdr *ipv6h ;
   struct arphdr *arph ;
   struct ipxhdr *ipxh ;
   unsigned char *raw ;
};
# 129 "linux-2.4.19/include/linux/skbuff.h"
union __anonunion_mac_143 {
   struct ethhdr *ethernet ;
   unsigned char *raw ;
};
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct dst_entry;
# 129 "linux-2.4.19/include/linux/skbuff.h"
struct sk_buff {
   struct sk_buff *next ;
   struct sk_buff *prev ;
   struct sk_buff_head *list ;
   struct sock *sk ;
   struct timeval stamp ;
   struct net_device *dev ;
   union __anonunion_h_141 h ;
   union __anonunion_nh_142 nh ;
   union __anonunion_mac_143 mac ;
   struct dst_entry *dst ;
   char cb[48] ;
   unsigned int len ;
   unsigned int data_len ;
   unsigned int csum ;
   unsigned char __unused ;
   unsigned char cloned ;
   unsigned char pkt_type ;
   unsigned char ip_summed ;
   __u32 priority ;
   atomic_t users ;
   unsigned short protocol ;
   unsigned short security ;
   unsigned int truesize ;
   unsigned char *head ;
   unsigned char *data ;
   unsigned char *tail ;
   unsigned char *end ;
   void (*destructor)(struct sk_buff * ) ;
};
# 149 "linux-2.4.19/include/linux/netdevice.h"
struct neighbour;
# 149 "linux-2.4.19/include/linux/netdevice.h"
struct neighbour;
# 150 "linux-2.4.19/include/linux/netdevice.h"
struct neigh_parms;
# 150 "linux-2.4.19/include/linux/netdevice.h"
struct neigh_parms;
# 151 "linux-2.4.19/include/linux/netdevice.h"
struct sk_buff;
# 174 "linux-2.4.19/include/linux/netdevice.h"
struct dev_mc_list {
   struct dev_mc_list *next ;
   __u8 dmi_addr[8] ;
   unsigned char dmi_addrlen ;
   int dmi_users ;
   int dmi_gusers ;
};
# 183 "linux-2.4.19/include/linux/netdevice.h"
struct hh_cache {
   struct hh_cache *hh_next ;
   atomic_t hh_refcnt ;
   unsigned short hh_type ;
   int hh_len ;
   int (*hh_output)(struct sk_buff *skb ) ;
   rwlock_t hh_lock ;
   unsigned long hh_data[(int )(16U / sizeof(unsigned long ))] ;
};
# 234 "linux-2.4.19/include/linux/netdevice.h"
struct iw_statistics;
# 234 "linux-2.4.19/include/linux/netdevice.h"
struct iw_handler_def;
# 234 "linux-2.4.19/include/linux/netdevice.h"
struct Qdisc;
# 234 "linux-2.4.19/include/linux/netdevice.h"
struct net_bridge_port;
# 234 "linux-2.4.19/include/linux/netdevice.h"
struct net_device {
   char name[16] ;
   unsigned long rmem_end ;
   unsigned long rmem_start ;
   unsigned long mem_end ;
   unsigned long mem_start ;
   unsigned long base_addr ;
   unsigned int irq ;
   unsigned char if_port ;
   unsigned char dma ;
   unsigned long state ;
   struct net_device *next ;
   int (*init)(struct net_device *dev ) ;
   struct net_device *next_sched ;
   int ifindex ;
   int iflink ;
   struct net_device_stats *(*get_stats)(struct net_device *dev ) ;
   struct iw_statistics *(*get_wireless_stats)(struct net_device *dev ) ;
   struct iw_handler_def *wireless_handlers ;
   unsigned long trans_start ;
   unsigned long last_rx ;
   unsigned short flags ;
   unsigned short gflags ;
   unsigned short priv_flags ;
   unsigned short unused_alignment_fixer ;
   unsigned int mtu ;
   unsigned short type ;
   unsigned short hard_header_len ;
   void *priv ;
   struct net_device *master ;
   unsigned char broadcast[8] ;
   unsigned char dev_addr[8] ;
   unsigned char addr_len ;
   struct dev_mc_list *mc_list ;
   int mc_count ;
   int promiscuity ;
   int allmulti ;
   int watchdog_timeo ;
   struct timer_list watchdog_timer ;
   void *atalk_ptr ;
   void *ip_ptr ;
   void *dn_ptr ;
   void *ip6_ptr ;
   void *ec_ptr ;
   struct Qdisc *qdisc ;
   struct Qdisc *qdisc_sleeping ;
   struct Qdisc *qdisc_list ;
   struct Qdisc *qdisc_ingress ;
   unsigned long tx_queue_len ;
   spinlock_t xmit_lock ;
   int xmit_lock_owner ;
   spinlock_t queue_lock ;
   atomic_t refcnt ;
   int deadbeaf ;
   int features ;
   void (*uninit)(struct net_device *dev ) ;
   void (*destructor)(struct net_device *dev ) ;
   int (*open)(struct net_device *dev ) ;
   int (*stop)(struct net_device *dev ) ;
   int (*hard_start_xmit)(struct sk_buff *skb , struct net_device *dev ) ;
   int (*hard_header)(struct sk_buff *skb , struct net_device *dev , unsigned short type ,
                      void *daddr , void *saddr , unsigned int len ) ;
   int (*rebuild_header)(struct sk_buff *skb ) ;
   void (*set_multicast_list)(struct net_device *dev ) ;
   int (*set_mac_address)(struct net_device *dev , void *addr ) ;
   int (*do_ioctl)(struct net_device *dev , struct ifreq *ifr , int cmd ) ;
   int (*set_config)(struct net_device *dev , struct ifmap *map ) ;
   int (*hard_header_cache)(struct neighbour *neigh , struct hh_cache *hh ) ;
   void (*header_cache_update)(struct hh_cache *hh , struct net_device *dev , unsigned char *haddr ) ;
   int (*change_mtu)(struct net_device *dev , int new_mtu ) ;
   void (*tx_timeout)(struct net_device *dev ) ;
   void (*vlan_rx_register)(struct net_device *dev , struct vlan_group *grp ) ;
   void (*vlan_rx_add_vid)(struct net_device *dev , unsigned short vid ) ;
   void (*vlan_rx_kill_vid)(struct net_device *dev , unsigned short vid ) ;
   int (*hard_header_parse)(struct sk_buff *skb , unsigned char *haddr ) ;
   int (*neigh_setup)(struct net_device *dev , struct neigh_parms * ) ;
   int (*accept_fastpath)(struct net_device * , struct dst_entry * ) ;
   struct module *owner ;
   struct net_bridge_port *br_port ;
};
# 14 "linux-2.4.19/include/linux/notifier.h"
struct notifier_block {
   int (*notifier_call)(struct notifier_block *self , unsigned long , void * ) ;
   struct notifier_block *next ;
   int priority ;
};
# 53 "linux-2.4.19/include/net/neighbour.h"
struct neigh_table;
# 53 "linux-2.4.19/include/net/neighbour.h"
struct neigh_parms {
   struct neigh_parms *next ;
   int (*neigh_setup)(struct neighbour * ) ;
   struct neigh_table *tbl ;
   int entries ;
   void *priv ;
   void *sysctl_table ;
   int base_reachable_time ;
   int retrans_time ;
   int gc_staletime ;
   int reachable_time ;
   int delay_probe_time ;
   int queue_len ;
   int ucast_probes ;
   int app_probes ;
   int mcast_probes ;
   int anycast_delay ;
   int proxy_delay ;
   int proxy_qlen ;
   int locktime ;
};
# 79 "linux-2.4.19/include/net/neighbour.h"
struct neigh_statistics {
   unsigned long allocs ;
   unsigned long res_failed ;
   unsigned long rcv_probes_mcast ;
   unsigned long rcv_probes_ucast ;
};
# 87 "linux-2.4.19/include/net/neighbour.h"
struct neigh_ops;
# 87 "linux-2.4.19/include/net/neighbour.h"
struct neighbour {
   struct neighbour *next ;
   struct neigh_table *tbl ;
   struct neigh_parms *parms ;
   struct net_device *dev ;
   unsigned long used ;
   unsigned long confirmed ;
   unsigned long updated ;
   __u8 flags ;
   __u8 nud_state ;
   __u8 type ;
   __u8 dead ;
   atomic_t probes ;
   rwlock_t lock ;
   unsigned char ha[(int )(((8U + sizeof(unsigned long )) - 1U) & ~ (sizeof(unsigned long ) - 1U))] ;
   struct hh_cache *hh ;
   atomic_t refcnt ;
   int (*output)(struct sk_buff *skb ) ;
   struct sk_buff_head arp_queue ;
   struct timer_list timer ;
   struct neigh_ops *ops ;
   u8 primary_key[0] ;
};
# 112 "linux-2.4.19/include/net/neighbour.h"
struct neigh_ops {
   int family ;
   void (*destructor)(struct neighbour * ) ;
   void (*solicit)(struct neighbour * , struct sk_buff * ) ;
   void (*error_report)(struct neighbour * , struct sk_buff * ) ;
   int (*output)(struct sk_buff * ) ;
   int (*connected_output)(struct sk_buff * ) ;
   int (*hh_output)(struct sk_buff * ) ;
   int (*queue_xmit)(struct sk_buff * ) ;
};
# 124 "linux-2.4.19/include/net/neighbour.h"
struct pneigh_entry {
   struct pneigh_entry *next ;
   struct net_device *dev ;
   u8 key[0] ;
};
# 139 "linux-2.4.19/include/net/neighbour.h"
struct neigh_table {
   struct neigh_table *next ;
   int family ;
   int entry_size ;
   int key_len ;
   __u32 (*hash)(void const *pkey , struct net_device const * ) ;
   int (*constructor)(struct neighbour * ) ;
   int (*pconstructor)(struct pneigh_entry * ) ;
   void (*pdestructor)(struct pneigh_entry * ) ;
   void (*proxy_redo)(struct sk_buff *skb ) ;
   char *id ;
   struct neigh_parms parms ;
   int gc_interval ;
   int gc_thresh1 ;
   int gc_thresh2 ;
   int gc_thresh3 ;
   unsigned long last_flush ;
   struct timer_list gc_timer ;
   struct timer_list proxy_timer ;
   struct sk_buff_head proxy_queue ;
   int entries ;
   rwlock_t lock ;
   unsigned long last_rand ;
   struct neigh_parms *parms_list ;
   kmem_cache_t *kmem_cachep ;
   struct tasklet_struct gc_task ;
   struct neigh_statistics stats ;
   struct neighbour *hash_buckets[32] ;
   struct pneigh_entry *phash_buckets[16] ;
};
# 25 "linux-2.4.19/include/net/dst.h"
struct sk_buff;
# 27 "linux-2.4.19/include/net/dst.h"
struct dst_ops;
# 27 "linux-2.4.19/include/net/dst.h"
struct dst_entry {
   struct dst_entry *next ;
   atomic_t __refcnt ;
   int __use ;
   struct net_device *dev ;
   int obsolete ;
   int flags ;
   unsigned long lastuse ;
   unsigned long expires ;
   unsigned int mxlock ;
   unsigned int pmtu ;
   unsigned int window ;
   unsigned int rtt ;
   unsigned int rttvar ;
   unsigned int ssthresh ;
   unsigned int cwnd ;
   unsigned int advmss ;
   unsigned int reordering ;
   unsigned long rate_last ;
   unsigned long rate_tokens ;
   int error ;
   struct neighbour *neighbour ;
   struct hh_cache *hh ;
   int (*input)(struct sk_buff * ) ;
   int (*output)(struct sk_buff * ) ;
   struct dst_ops *ops ;
   char info[0] ;
};
# 70 "linux-2.4.19/include/net/dst.h"
struct dst_ops {
   unsigned short family ;
   unsigned short protocol ;
   unsigned int gc_thresh ;
   int (*gc)(void) ;
   struct dst_entry *(*check)(struct dst_entry * , __u32 cookie ) ;
   struct dst_entry *(*reroute)(struct dst_entry * , struct sk_buff * ) ;
   void (*destroy)(struct dst_entry * ) ;
   struct dst_entry *(*negative_advice)(struct dst_entry * ) ;
   void (*link_failure)(struct sk_buff * ) ;
   int entry_size ;
   atomic_t entries ;
   kmem_cache_t *kmem_cachep ;
};
# 128 "linux-2.4.19/include/linux/if_arp.h"
struct arphdr {
   unsigned short ar_hrd ;
   unsigned short ar_pro ;
   unsigned char ar_hln ;
   unsigned char ar_pln ;
   unsigned short ar_op ;
};
# 66 "linux-2.4.19/include/linux/icmp.h"
struct __anonstruct_echo_154 {
   __u16 id ;
   __u16 sequence ;
};
# 66 "linux-2.4.19/include/linux/icmp.h"
struct __anonstruct_frag_155 {
   __u16 __unused ;
   __u16 mtu ;
};
# 66 "linux-2.4.19/include/linux/icmp.h"
union __anonunion_un_153 {
   struct __anonstruct_echo_154 echo ;
   __u32 gateway ;
   struct __anonstruct_frag_155 frag ;
};
# 66 "linux-2.4.19/include/linux/icmp.h"
struct icmphdr {
   __u8 type ;
   __u8 code ;
   __u16 checksum ;
   union __anonunion_un_153 un ;
};
# 89 "linux-2.4.19/include/linux/icmp.h"
struct icmp_filter {
   __u32 data ;
};
# 23 "linux-2.4.19/include/linux/tcp.h"
struct tcphdr {
   __u16 source ;
   __u16 dest ;
   __u32 seq ;
   __u32 ack_seq ;
   __u16 res1 : 4 ;
   __u16 doff : 4 ;
   __u16 fin : 1 ;
   __u16 syn : 1 ;
   __u16 rst : 1 ;
   __u16 psh : 1 ;
   __u16 ack : 1 ;
   __u16 urg : 1 ;
   __u16 ece : 1 ;
   __u16 cwr : 1 ;
   __u16 window ;
   __u16 check ;
   __u16 urg_ptr ;
};
# 67 "linux-2.4.19/include/net/protocol.h"
struct proto;
# 111 "linux-2.4.19/include/net/sock.h"
struct unix_address;
# 111 "linux-2.4.19/include/net/sock.h"
struct unix_opt {
   struct unix_address *addr ;
   struct dentry *dentry ;
   struct vfsmount *mnt ;
   struct semaphore readsem ;
   struct sock *other ;
   struct sock **list ;
   struct sock *gc_tree ;
   atomic_t inflight ;
   rwlock_t lock ;
   wait_queue_head_t peer_wait ;
};
# 194 "linux-2.4.19/include/net/sock.h"
struct raw_opt {
   struct icmp_filter filter ;
};
# 200 "linux-2.4.19/include/net/sock.h"
struct ip_mc_socklist;
# 200 "linux-2.4.19/include/net/sock.h"
struct inet_opt {
   int ttl ;
   int tos ;
   unsigned int cmsg_flags ;
   struct ip_options *opt ;
   unsigned char hdrincl ;
   __u8 mc_ttl ;
   __u8 mc_loop ;
   unsigned int recverr : 1 ;
   unsigned int freebind : 1 ;
   __u16 id ;
   __u8 pmtudisc ;
   int mc_index ;
   __u32 mc_addr ;
   struct ip_mc_socklist *mc_list ;
};
# 243 "linux-2.4.19/include/net/sock.h"
struct tcp_sack_block {
   __u32 start_seq ;
   __u32 end_seq ;
};
# 248 "linux-2.4.19/include/net/sock.h"
struct __anonstruct_ack_160 {
   __u8 pending ;
   __u8 quick ;
   __u8 pingpong ;
   __u8 blocked ;
   __u32 ato ;
   unsigned long timeout ;
   __u32 lrcvtime ;
   __u16 last_seg_size ;
   __u16 rcv_mss ;
};
# 248 "linux-2.4.19/include/net/sock.h"
struct __anonstruct_ucopy_161 {
   struct sk_buff_head prequeue ;
   struct task_struct *task ;
   struct iovec *iov ;
   int memory ;
   int len ;
};
# 248 "linux-2.4.19/include/net/sock.h"
struct tcp_func;
# 248 "linux-2.4.19/include/net/sock.h"
struct tcp_listen_opt;
# 248 "linux-2.4.19/include/net/sock.h"
struct open_request;
# 248 "linux-2.4.19/include/net/sock.h"
struct tcp_opt {
   int tcp_header_len ;
   __u32 pred_flags ;
   __u32 rcv_nxt ;
   __u32 snd_nxt ;
   __u32 snd_una ;
   __u32 snd_sml ;
   __u32 rcv_tstamp ;
   __u32 lsndtime ;
   struct __anonstruct_ack_160 ack ;
   struct __anonstruct_ucopy_161 ucopy ;
   __u32 snd_wl1 ;
   __u32 snd_wnd ;
   __u32 max_window ;
   __u32 pmtu_cookie ;
   __u16 mss_cache ;
   __u16 mss_clamp ;
   __u16 ext_header_len ;
   __u8 ca_state ;
   __u8 retransmits ;
   __u8 reordering ;
   __u8 queue_shrunk ;
   __u8 defer_accept ;
   __u8 backoff ;
   __u32 srtt ;
   __u32 mdev ;
   __u32 mdev_max ;
   __u32 rttvar ;
   __u32 rtt_seq ;
   __u32 rto ;
   __u32 packets_out ;
   __u32 left_out ;
   __u32 retrans_out ;
   __u32 snd_ssthresh ;
   __u32 snd_cwnd ;
   __u16 snd_cwnd_cnt ;
   __u16 snd_cwnd_clamp ;
   __u32 snd_cwnd_used ;
   __u32 snd_cwnd_stamp ;
   unsigned long timeout ;
   struct timer_list retransmit_timer ;
   struct timer_list delack_timer ;
   struct sk_buff_head out_of_order_queue ;
   struct tcp_func *af_specific ;
   struct sk_buff *send_head ;
   struct page *sndmsg_page ;
   u32 sndmsg_off ;
   __u32 rcv_wnd ;
   __u32 rcv_wup ;
   __u32 write_seq ;
   __u32 pushed_seq ;
   __u32 copied_seq ;
   char tstamp_ok ;
   char wscale_ok ;
   char sack_ok ;
   char saw_tstamp ;
   __u8 snd_wscale ;
   __u8 rcv_wscale ;
   __u8 nonagle ;
   __u8 keepalive_probes ;
   __u32 rcv_tsval ;
   __u32 rcv_tsecr ;
   __u32 ts_recent ;
   long ts_recent_stamp ;
   __u16 user_mss ;
   __u8 dsack ;
   __u8 eff_sacks ;
   struct tcp_sack_block duplicate_sack[1] ;
   struct tcp_sack_block selective_acks[4] ;
   __u32 window_clamp ;
   __u32 rcv_ssthresh ;
   __u8 probes_out ;
   __u8 num_sacks ;
   __u16 advmss ;
   __u8 syn_retries ;
   __u8 ecn_flags ;
   __u16 prior_ssthresh ;
   __u32 lost_out ;
   __u32 sacked_out ;
   __u32 fackets_out ;
   __u32 high_seq ;
   __u32 retrans_stamp ;
   __u32 undo_marker ;
   int undo_retrans ;
   __u32 urg_seq ;
   __u16 urg_data ;
   __u8 pending ;
   __u8 urg_mode ;
   __u32 snd_up ;
   rwlock_t syn_wait_lock ;
   struct tcp_listen_opt *listen_opt ;
   struct open_request *accept_queue ;
   struct open_request *accept_queue_tail ;
   int write_pending ;
   unsigned int keepalive_time ;
   unsigned int keepalive_intvl ;
   int linger2 ;
   unsigned long last_synq_overflow ;
};
# 477 "linux-2.4.19/include/net/sock.h"
struct __anonstruct_socket_lock_t_162 {
   spinlock_t slock ;
   unsigned int users ;
   wait_queue_head_t wq ;
};
# 477 "linux-2.4.19/include/net/sock.h"
typedef struct __anonstruct_socket_lock_t_162 socket_lock_t;
# 489 "linux-2.4.19/include/net/sock.h"
struct __anonstruct_backlog_163 {
   struct sk_buff *head ;
   struct sk_buff *tail ;
};
# 489 "linux-2.4.19/include/net/sock.h"
union __anonunion_tp_pinfo_164 {
   struct tcp_opt af_tcp ;
   struct raw_opt tp_raw4 ;
};
# 489 "linux-2.4.19/include/net/sock.h"
struct packet_opt;
# 489 "linux-2.4.19/include/net/sock.h"
struct netlink_opt;
# 489 "linux-2.4.19/include/net/sock.h"
union __anonunion_protinfo_165 {
   void *destruct_hook ;
   struct unix_opt af_unix ;
   struct inet_opt af_inet ;
   struct packet_opt *af_packet ;
   struct netlink_opt *af_netlink ;
};
# 489 "linux-2.4.19/include/net/sock.h"
struct sock {
   __u32 daddr ;
   __u32 rcv_saddr ;
   __u16 dport ;
   unsigned short num ;
   int bound_dev_if ;
   struct sock *next ;
   struct sock **pprev ;
   struct sock *bind_next ;
   struct sock **bind_pprev ;
   unsigned char volatile state ;
   unsigned char volatile zapped ;
   __u16 sport ;
   unsigned short family ;
   unsigned char reuse ;
   unsigned char shutdown ;
   atomic_t refcnt ;
   socket_lock_t lock ;
   int rcvbuf ;
   wait_queue_head_t *sleep ;
   struct dst_entry *dst_cache ;
   rwlock_t dst_lock ;
   atomic_t rmem_alloc ;
   struct sk_buff_head receive_queue ;
   atomic_t wmem_alloc ;
   struct sk_buff_head write_queue ;
   atomic_t omem_alloc ;
   int wmem_queued ;
   int forward_alloc ;
   __u32 saddr ;
   unsigned int allocation ;
   int sndbuf ;
   struct sock *prev ;
   char volatile dead ;
   char volatile done ;
   char volatile urginline ;
   char volatile keepopen ;
   char volatile linger ;
   char volatile destroy ;
   char volatile no_check ;
   char volatile broadcast ;
   char volatile bsdism ;
   unsigned char debug ;
   unsigned char rcvtstamp ;
   unsigned char use_write_queue ;
   unsigned char userlocks ;
   int route_caps ;
   int proc ;
   unsigned long lingertime ;
   int hashent ;
   struct sock *pair ;
   struct __anonstruct_backlog_163 backlog ;
   rwlock_t callback_lock ;
   struct sk_buff_head error_queue ;
   struct proto *prot ;
   union __anonunion_tp_pinfo_164 tp_pinfo ;
   int err ;
   int err_soft ;
   unsigned short ack_backlog ;
   unsigned short max_ack_backlog ;
   __u32 priority ;
   unsigned short type ;
   unsigned char localroute ;
   unsigned char protocol ;
   struct ucred peercred ;
   int rcvlowat ;
   long rcvtimeo ;
   long sndtimeo ;
   union __anonunion_protinfo_165 protinfo ;
   struct timer_list timer ;
   struct timeval stamp ;
   struct socket *socket ;
   void *user_data ;
   void (*state_change)(struct sock *sk ) ;
   void (*data_ready)(struct sock *sk , int bytes ) ;
   void (*write_space)(struct sock *sk ) ;
   void (*error_report)(struct sock *sk ) ;
   int (*backlog_rcv)(struct sock *sk , struct sk_buff *skb ) ;
   void (*destruct)(struct sock *sk ) ;
};
# 699 "linux-2.4.19/include/net/sock.h"
struct __anonstruct_stats_166 {
   int inuse ;
   u8 __pad[(int )(32U - sizeof(int ))] ;
};
# 699 "linux-2.4.19/include/net/sock.h"
struct proto {
   void (*close)(struct sock *sk , long timeout ) ;
   int (*connect)(struct sock *sk , struct sockaddr *uaddr , int addr_len ) ;
   int (*disconnect)(struct sock *sk , int flags ) ;
   struct sock *(*accept)(struct sock *sk , int flags , int *err ) ;
   int (*ioctl)(struct sock *sk , int cmd , unsigned long arg ) ;
   int (*init)(struct sock *sk ) ;
   int (*destroy)(struct sock *sk ) ;
   void (*shutdown)(struct sock *sk , int how ) ;
   int (*setsockopt)(struct sock *sk , int level , int optname , char *optval , int optlen ) ;
   int (*getsockopt)(struct sock *sk , int level , int optname , char *optval , int *option ) ;
   int (*sendmsg)(struct sock *sk , struct msghdr *msg , int len ) ;
   int (*recvmsg)(struct sock *sk , struct msghdr *msg , int len , int noblock , int flags ,
                  int *addr_len ) ;
   int (*bind)(struct sock *sk , struct sockaddr *uaddr , int addr_len ) ;
   int (*backlog_rcv)(struct sock *sk , struct sk_buff *skb ) ;
   void (*hash)(struct sock *sk ) ;
   void (*unhash)(struct sock *sk ) ;
   int (*get_port)(struct sock *sk , unsigned short snum ) ;
   char name[32] ;
   struct __anonstruct_stats_166 stats[32] ;
};
# 81 "linux-2.4.19/include/asm/uaccess.h"
struct exception_table_entry {
   unsigned long insn ;
   unsigned long fixup ;
};
# 188 "linux-2.4.19/include/asm/uaccess.h"
struct __large_struct {
   unsigned long buf[100] ;
};
# 18 "linux-2.4.19/include/linux/kernel_stat.h"
struct kernel_stat {
   unsigned int per_cpu_user[32] ;
   unsigned int per_cpu_nice[32] ;
   unsigned int per_cpu_system[32] ;
   unsigned int dk_drive[16][16] ;
   unsigned int dk_drive_rio[16][16] ;
   unsigned int dk_drive_wio[16][16] ;
   unsigned int dk_drive_rblk[16][16] ;
   unsigned int dk_drive_wblk[16][16] ;
   unsigned int pgpgin ;
   unsigned int pgpgout ;
   unsigned int pswpin ;
   unsigned int pswpout ;
   unsigned int irqs[32][224] ;
   unsigned int context_swtch ;
};
# 150 "linux-2.4.19/include/linux/raid/md_compatible.h"
typedef wait_queue_head_t md_wait_queue_head_t;
# 82 "linux-2.4.19/include/linux/raid/md_p.h"
struct mdp_device_descriptor_s {
   __u32 number ;
   __u32 major ;
   __u32 minor ;
   __u32 raid_disk ;
   __u32 state ;
   __u32 reserved[27] ;
};
# 82 "linux-2.4.19/include/linux/raid/md_p.h"
typedef struct mdp_device_descriptor_s mdp_disk_t;
# 99 "linux-2.4.19/include/linux/raid/md_p.h"
struct mdp_superblock_s {
   __u32 md_magic ;
   __u32 major_version ;
   __u32 minor_version ;
   __u32 patch_version ;
   __u32 gvalid_words ;
   __u32 set_uuid0 ;
   __u32 ctime ;
   __u32 level ;
   __u32 size ;
   __u32 nr_disks ;
   __u32 raid_disks ;
   __u32 md_minor ;
   __u32 not_persistent ;
   __u32 set_uuid1 ;
   __u32 set_uuid2 ;
   __u32 set_uuid3 ;
   __u32 gstate_creserved[16] ;
   __u32 utime ;
   __u32 state ;
   __u32 active_disks ;
   __u32 working_disks ;
   __u32 failed_disks ;
   __u32 spare_disks ;
   __u32 sb_csum ;
   __u32 events_lo ;
   __u32 events_hi ;
   __u32 gstate_sreserved[23] ;
   __u32 layout ;
   __u32 chunk_size ;
   __u32 root_pv ;
   __u32 root_block ;
   __u32 pstate_reserved[60] ;
   mdp_disk_t disks[27] ;
   __u32 reserved[0] ;
   mdp_disk_t this_disk ;
};
# 99 "linux-2.4.19/include/linux/raid/md_p.h"
typedef struct mdp_superblock_s mdp_super_t;
# 47 "linux-2.4.19/include/linux/raid/md_u.h"
struct mdu_version_s {
   int major ;
   int minor ;
   int patchlevel ;
};
# 47 "linux-2.4.19/include/linux/raid/md_u.h"
typedef struct mdu_version_s mdu_version_t;
# 53 "linux-2.4.19/include/linux/raid/md_u.h"
struct mdu_array_info_s {
   int major_version ;
   int minor_version ;
   int patch_version ;
   int ctime ;
   int level ;
   int size ;
   int nr_disks ;
   int raid_disks ;
   int md_minor ;
   int not_persistent ;
   int utime ;
   int state ;
   int active_disks ;
   int working_disks ;
   int failed_disks ;
   int spare_disks ;
   int layout ;
   int chunk_size ;
};
# 53 "linux-2.4.19/include/linux/raid/md_u.h"
typedef struct mdu_array_info_s mdu_array_info_t;
# 86 "linux-2.4.19/include/linux/raid/md_u.h"
struct mdu_disk_info_s {
   int number ;
   int major ;
   int minor ;
   int raid_disk ;
   int state ;
};
# 86 "linux-2.4.19/include/linux/raid/md_u.h"
typedef struct mdu_disk_info_s mdu_disk_info_t;
# 109 "linux-2.4.19/include/linux/raid/md_u.h"
struct mdu_param_s {
   int personality ;
   int chunk_size ;
   int max_fault ;
};
# 109 "linux-2.4.19/include/linux/raid/md_u.h"
typedef struct mdu_param_s mdu_param_t;
# 58 "linux-2.4.19/include/linux/raid/md_k.h"
struct mddev_s;
# 58 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct mddev_s mddev_t;
# 59 "linux-2.4.19/include/linux/raid/md_k.h"
struct mdk_rdev_s;
# 59 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct mdk_rdev_s mdk_rdev_t;
# 71 "linux-2.4.19/include/linux/raid/md_k.h"
struct dev_mapping_s {
   mddev_t *mddev ;
   void *data ;
};
# 71 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct dev_mapping_s dev_mapping_t;
# 159 "linux-2.4.19/include/linux/raid/md_k.h"
struct mdk_rdev_s {
   struct list_head same_set ;
   struct list_head all ;
   struct list_head pending ;
   kdev_t dev ;
   kdev_t old_dev ;
   unsigned long size ;
   mddev_t *mddev ;
   unsigned long last_events ;
   struct block_device *bdev ;
   mdp_super_t *sb ;
   unsigned long sb_offset ;
   int alias_device ;
   int faulty ;
   int desc_nr ;
};
# 191 "linux-2.4.19/include/linux/raid/md_k.h"
struct mdk_personality_s;
# 191 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct mdk_personality_s mdk_personality_t;
# 193 "linux-2.4.19/include/linux/raid/md_k.h"
struct mddev_s {
   void *private ;
   mdk_personality_t *pers ;
   int __minor ;
   mdp_super_t *sb ;
   int nb_dev ;
   struct list_head disks ;
   int sb_dirty ;
   mdu_param_t param ;
   int ro ;
   unsigned long curr_resync ;
   unsigned long resync_mark ;
   unsigned long resync_mark_cnt ;
   char *name ;
   int recovery_running ;
   struct semaphore reconfig_sem ;
   struct semaphore recovery_sem ;
   struct semaphore resync_sem ;
   atomic_t active ;
   atomic_t recovery_active ;
   md_wait_queue_head_t recovery_wait ;
   struct list_head all_mddevs ;
};
# 220 "linux-2.4.19/include/linux/raid/md_k.h"
struct mdk_personality_s {
   char *name ;
   int (*make_request)(mddev_t *mddev , int rw , struct buffer_head *bh ) ;
   int (*run)(mddev_t *mddev ) ;
   int (*stop)(mddev_t *mddev ) ;
   int (*status)(char *page , mddev_t *mddev ) ;
   int (*error_handler)(mddev_t *mddev , kdev_t dev ) ;
   int (*diskop)(mddev_t *mddev , mdp_disk_t **descriptor , int state ) ;
   int (*stop_resync)(mddev_t *mddev ) ;
   int (*restart_resync)(mddev_t *mddev ) ;
   int (*sync_request)(mddev_t *mddev , unsigned long block_nr ) ;
};
# 325 "linux-2.4.19/include/linux/raid/md_k.h"
struct mdk_thread_s {
   void (*run)(void *data ) ;
   void *data ;
   md_wait_queue_head_t wqueue ;
   unsigned long flags ;
   struct completion *event ;
   struct task_struct *tsk ;
   char const *name ;
};
# 325 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct mdk_thread_s mdk_thread_t;
# 339 "linux-2.4.19/include/linux/raid/md_k.h"
struct dev_name_s {
   struct list_head list ;
   kdev_t dev ;
   char namebuf[64] ;
   char *name ;
};
# 339 "linux-2.4.19/include/linux/raid/md_k.h"
typedef struct dev_name_s dev_name_t;
# 31 "linux-2.4.19/include/linux/sysctl.h"
struct file;
# 636 "linux-2.4.19/include/linux/sysctl.h"
struct ctl_table;
# 636 "linux-2.4.19/include/linux/sysctl.h"
typedef struct ctl_table ctl_table;
# 638 "linux-2.4.19/include/linux/sysctl.h"
typedef int ctl_handler(ctl_table *table , int *name , int nlen , void *oldval , size_t *oldlenp ,
                        void *newval , size_t newlen , void **context );
# 643 "linux-2.4.19/include/linux/sysctl.h"
typedef int proc_handler(ctl_table *ctl , int write , struct file *filp , void *buffer ,
                         size_t *lenp );
# 713 "linux-2.4.19/include/linux/sysctl.h"
struct ctl_table {
   int ctl_name ;
   char const *procname ;
   void *data ;
   int maxlen ;
   mode_t mode ;
   ctl_table *child ;
   proc_handler *proc_handler ;
   ctl_handler *strategy ;
   struct proc_dir_entry *de ;
   void *extra1 ;
   void *extra2 ;
};
# 730 "linux-2.4.19/include/linux/sysctl.h"
struct ctl_table_header {
   ctl_table *ctl_table ;
   struct list_head ctl_entry ;
};
# 3706 "md.c"
struct __anonstruct_raid_setup_args_206 {
   int set ;
   int noautodetect ;
};
# 3759 "md.c"
struct __anonstruct_md_setup_args_207 {
   char device_set[256] ;
   int pers[256] ;
   int chunk[256] ;
   char *device_names[256] ;
};
# 53 "linux-2.4.19/include/asm/atomic.h"
__inline static void atomic_add(int i , atomic_t *v )
{

  {
# 55 "linux-2.4.19/include/asm/atomic.h"
  __asm__ volatile ("lock ; "
                       "addl %1,%0": "=m" (v->counter): "ir" (i), "m" (v->counter));
# 59 "linux-2.4.19/include/asm/atomic.h"
  return;
}
}
# 69 "linux-2.4.19/include/asm/atomic.h"
__inline static void atomic_sub(int i , atomic_t *v )
{

  {
# 71 "linux-2.4.19/include/asm/atomic.h"
  __asm__ volatile ("lock ; "
                       "subl %1,%0": "=m" (v->counter): "ir" (i), "m" (v->counter));
# 75 "linux-2.4.19/include/asm/atomic.h"
  return;
}
}
# 105 "linux-2.4.19/include/asm/atomic.h"
__inline static void atomic_inc(atomic_t *v )
{

  {
# 107 "linux-2.4.19/include/asm/atomic.h"
  __asm__ volatile ("lock ; "
                       "incl %0": "=m" (v->counter): "m" (v->counter));
# 111 "linux-2.4.19/include/asm/atomic.h"
  return;
}
}
# 120 "linux-2.4.19/include/asm/atomic.h"
__inline static void atomic_dec(atomic_t *v )
{

  {
# 122 "linux-2.4.19/include/asm/atomic.h"
  __asm__ volatile ("lock ; "
                       "decl %0": "=m" (v->counter): "m" (v->counter));
# 126 "linux-2.4.19/include/asm/atomic.h"
  return;
}
}
# 9 "linux-2.4.19/include/asm/spinlock.h"
extern int ( __attribute__((__regparm__(0))) printk)(char const *fmt
                                                                            , ...) ;
# 80 "linux-2.4.19/include/asm/spinlock.h"
__inline static void spin_unlock(spinlock_t *lock )
{

  {
# 88 "linux-2.4.19/include/asm/spinlock.h"
  __asm__ volatile ("movb $1,%0": "=m" (lock->lock): : "memory");
# 91 "linux-2.4.19/include/asm/spinlock.h"
  return;
}
}
# 126 "linux-2.4.19/include/asm/spinlock.h"
__inline static void spin_lock(spinlock_t *lock )
{

  {
# 136 "linux-2.4.19/include/asm/spinlock.h"
  __asm__ volatile ("\n1:\t"
                       "lock ; decb %0\n\t"
                       "js 2f\n"
                       ".subsection 1\n\t"
                       ""
                       ".ifndef "
                       ".text.lock."
                       "md"
                       "\n\t"
                       ".text.lock."
                       "md"
                       ":\n\t"
                       ".endif\n\t"
                       "2:\t"
                       "cmpb $0,%0\n\t"
                       "rep;nop\n\t"
                       "jle 2b\n\t"
                       "jmp 1b\n"
                       ".previous\n\t": "=m" (lock->lock): : "memory");
# 139 "linux-2.4.19/include/asm/spinlock.h"
  return;
}
}
# 436 "linux-2.4.19/include/asm/processor.h"
extern int kernel_thread(int (*fn)(void * ) , void *arg , unsigned long flags ) ;
# 489 "linux-2.4.19/include/asm/processor.h"
__inline static void prefetch__extinline(void const *x )
{

  {
# 491 "linux-2.4.19/include/asm/processor.h"
  __asm__ volatile ("prefetchnta (%0)": : "r" (x));
# 492 "linux-2.4.19/include/asm/processor.h"
  return;
}
}
# 37 "linux-2.4.19/include/linux/list.h"
__inline static void __list_add(struct list_head *new , struct list_head *prev , struct list_head *next )
{

  {
# 41 "linux-2.4.19/include/linux/list.h"
  next->prev = new;
# 42 "linux-2.4.19/include/linux/list.h"
  new->next = next;
# 43 "linux-2.4.19/include/linux/list.h"
  new->prev = prev;
# 44 "linux-2.4.19/include/linux/list.h"
  prev->next = new;
# 45 "linux-2.4.19/include/linux/list.h"
  return;
}
}
# 55 "linux-2.4.19/include/linux/list.h"
__inline static void list_add(struct list_head *new , struct list_head *head )
{

  {
# 57 "linux-2.4.19/include/linux/list.h"
  __list_add(new, head, head->next);
# 58 "linux-2.4.19/include/linux/list.h"
  return;
}
}
# 80 "linux-2.4.19/include/linux/list.h"
__inline static void __list_del(struct list_head *prev , struct list_head *next )
{

  {
# 83 "linux-2.4.19/include/linux/list.h"
  next->prev = prev;
# 84 "linux-2.4.19/include/linux/list.h"
  prev->next = next;
# 85 "linux-2.4.19/include/linux/list.h"
  return;
}
}
# 92 "linux-2.4.19/include/linux/list.h"
__inline static void list_del(struct list_head *entry )
{

  {
# 94 "linux-2.4.19/include/linux/list.h"
  __list_del(entry->prev, entry->next);
# 95 "linux-2.4.19/include/linux/list.h"
  return;
}
}
# 111 "linux-2.4.19/include/linux/list.h"
__inline static int list_empty(struct list_head *head )
{

  {
# 113 "linux-2.4.19/include/linux/list.h"
  return ((unsigned int )head->next == (unsigned int )head);
}
}
# 71 "linux-2.4.19/include/linux/kernel.h"
extern int ( sprintf)(char *buf , char const *fmt , ...) ;
# 165 "linux-2.4.19/include/linux/kernel.h"
extern __attribute__((__noreturn__)) void __out_of_line_bug(int line ) ;
# 155 "linux-2.4.19/include/linux/wait.h"
__inline static void init_waitqueue_head(wait_queue_head_t *q )
{ spinlock_t __constr_expr_0 ;

  {
# 161 "linux-2.4.19/include/linux/wait.h"
  __constr_expr_0.lock = (unsigned int volatile )1;
# 161 "linux-2.4.19/include/linux/wait.h"
  q->lock = __constr_expr_0;
# 162 "linux-2.4.19/include/linux/wait.h"
  while (1) {
# 162 "linux-2.4.19/include/linux/wait.h"
    q->task_list.next = & q->task_list;
# 162 "linux-2.4.19/include/linux/wait.h"
    q->task_list.prev = & q->task_list;
# 162 "linux-2.4.19/include/linux/wait.h"
    break;
  }
# 167 "linux-2.4.19/include/linux/wait.h"
  return;
}
}
# 169 "linux-2.4.19/include/linux/wait.h"
__inline static void init_waitqueue_entry(wait_queue_t *q , struct task_struct *p )
{

  {
# 175 "linux-2.4.19/include/linux/wait.h"
  q->flags = 0U;
# 176 "linux-2.4.19/include/linux/wait.h"
  q->task = p;
# 180 "linux-2.4.19/include/linux/wait.h"
  return;
}
}
# 76 "linux-2.4.19/include/linux/kdev_t.h"
extern char const *kdevname(kdev_t ) ;
# 150 "linux-2.4.19/include/asm/string.h"
__inline static char *strchr(char const *s , int c )
{ int d0 ;
  register char *__res ;

  {
# 154 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("movb %%al,%%ah\n"
                       "1:\tlodsb\n\t"
                       "cmpb %%ah,%%al\n\t"
                       "je 2f\n\t"
                       "testb %%al,%%al\n\t"
                       "jne 1b\n\t"
                       "movl $1,%1\n"
                       "2:\tmovl %1,%0\n\t"
                       "decl %0": "=a" (__res), "=&S" (d0): "1" (s), "0" (c));
# 165 "linux-2.4.19/include/asm/string.h"
  return (__res);
}
}
# 221 "linux-2.4.19/include/asm/string.h"
__inline static void *__constant_memcpy(void *to , void const *from , size_t n )
{ int d0 ;
  int d1 ;
  int d2 ;

  {
# 223 "linux-2.4.19/include/asm/string.h"
  switch ((int )n) {
  case 0:
# 225 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 1:
# 227 "linux-2.4.19/include/asm/string.h"
  (*((unsigned char *)to)) = (unsigned char )(*((unsigned char const *)from));
# 228 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 2:
# 230 "linux-2.4.19/include/asm/string.h"
  (*((unsigned short *)to)) = (unsigned short )(*((unsigned short const *)from));
# 231 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 3:
# 233 "linux-2.4.19/include/asm/string.h"
  (*((unsigned short *)to)) = (unsigned short )(*((unsigned short const *)from));
# 234 "linux-2.4.19/include/asm/string.h"
  (*((unsigned char *)to + 2)) = (unsigned char )(*((unsigned char const *)from + 2));
# 235 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 4:
# 237 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 238 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 6:
# 240 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 241 "linux-2.4.19/include/asm/string.h"
  (*((unsigned short *)to + 2)) = (unsigned short )(*((unsigned short const *)from + 2));
# 242 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 8:
# 244 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 245 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 1)) = (unsigned long )(*((unsigned long const *)from + 1));
# 246 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 12:
# 248 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 249 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 1)) = (unsigned long )(*((unsigned long const *)from + 1));
# 250 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 2)) = (unsigned long )(*((unsigned long const *)from + 2));
# 251 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 16:
# 253 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 254 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 1)) = (unsigned long )(*((unsigned long const *)from + 1));
# 255 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 2)) = (unsigned long )(*((unsigned long const *)from + 2));
# 256 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 3)) = (unsigned long )(*((unsigned long const *)from + 3));
# 257 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 20:
# 259 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to)) = (unsigned long )(*((unsigned long const *)from));
# 260 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 1)) = (unsigned long )(*((unsigned long const *)from + 1));
# 261 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 2)) = (unsigned long )(*((unsigned long const *)from + 2));
# 262 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 3)) = (unsigned long )(*((unsigned long const *)from + 3));
# 263 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)to + 4)) = (unsigned long )(*((unsigned long const *)from + 4));
# 264 "linux-2.4.19/include/asm/string.h"
  return (to);
  }
# 275 "linux-2.4.19/include/asm/string.h"
  switch ((int )(n % 4U)) {
  case 0:
# 276 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; movsl"
                       "": "=&c" (d0), "=&D" (d1), "=&S" (d2): "0" (n / 4U), "1" ((long )to),
                       "2" ((long )from): "memory");
# 276 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 1:
# 277 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; movsl"
                       "\n\tmovsb": "=&c" (d0), "=&D" (d1), "=&S" (d2): "0" (n / 4U),
                       "1" ((long )to), "2" ((long )from): "memory");
# 277 "linux-2.4.19/include/asm/string.h"
  return (to);
  case 2:
# 278 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; movsl"
                       "\n\tmovsw": "=&c" (d0), "=&D" (d1), "=&S" (d2): "0" (n / 4U),
                       "1" ((long )to), "2" ((long )from): "memory");
# 278 "linux-2.4.19/include/asm/string.h"
  return (to);
  default:
# 279 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; movsl"
                       "\n\tmovsw\n\tmovsb": "=&c" (d0), "=&D" (d1), "=&S" (d2): "0" (n / 4U),
                       "1" ((long )to), "2" ((long )from): "memory");
# 279 "linux-2.4.19/include/asm/string.h"
  return (to);
  }
}
}
# 408 "linux-2.4.19/include/asm/string.h"
__inline static void *__constant_c_memset(void *s , unsigned long c , size_t count )
{ int d0 ;
  int d1 ;

  {
# 411 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; stosl\n\t"
                       "testb $2,%b3\n\t"
                       "je 1f\n\t"
                       "stosw\n"
                       "1:\ttestb $1,%b3\n\t"
                       "je 2f\n\t"
                       "stosb\n"
                       "2:": "=&c" (d0), "=&D" (d1): "a" (c), "q" (count), "0" (count / 4U),
                       "1" ((long )s): "memory");
# 423 "linux-2.4.19/include/asm/string.h"
  return (s);
}
}
# 456 "linux-2.4.19/include/asm/string.h"
__inline static void *__constant_c_and_count_memset(void *s , unsigned long pattern ,
                                                    size_t count )
{ int d0 ;
  int d1 ;

  {
# 458 "linux-2.4.19/include/asm/string.h"
  switch ((int )count) {
  case 0:
# 460 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 1:
# 462 "linux-2.4.19/include/asm/string.h"
  (*((unsigned char *)s)) = (unsigned char )pattern;
# 463 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 2:
# 465 "linux-2.4.19/include/asm/string.h"
  (*((unsigned short *)s)) = (unsigned short )pattern;
# 466 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 3:
# 468 "linux-2.4.19/include/asm/string.h"
  (*((unsigned short *)s)) = (unsigned short )pattern;
# 469 "linux-2.4.19/include/asm/string.h"
  (*((unsigned char *)s + 2)) = (unsigned char )pattern;
# 470 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 4:
# 472 "linux-2.4.19/include/asm/string.h"
  (*((unsigned long *)s)) = pattern;
# 473 "linux-2.4.19/include/asm/string.h"
  return (s);
  }
# 484 "linux-2.4.19/include/asm/string.h"
  switch ((int )(count % 4U)) {
  case 0:
# 485 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; stosl"
                       "": "=&c" (d0), "=&D" (d1): "a" (pattern), "0" (count / 4U),
                       "1" ((long )s): "memory");
# 485 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 1:
# 486 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; stosl"
                       "\n\tstosb": "=&c" (d0), "=&D" (d1): "a" (pattern), "0" (count / 4U),
                       "1" ((long )s): "memory");
# 486 "linux-2.4.19/include/asm/string.h"
  return (s);
  case 2:
# 487 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; stosl"
                       "\n\tstosw": "=&c" (d0), "=&D" (d1): "a" (pattern), "0" (count / 4U),
                       "1" ((long )s): "memory");
# 487 "linux-2.4.19/include/asm/string.h"
  return (s);
  default:
# 488 "linux-2.4.19/include/asm/string.h"
  __asm__ volatile ("rep ; stosl"
                       "\n\tstosw\n\tstosb": "=&c" (d0), "=&D" (d1): "a" (pattern),
                       "0" (count / 4U), "1" ((long )s): "memory");
# 488 "linux-2.4.19/include/asm/string.h"
  return (s);
  }
}
}
# 77 "linux-2.4.19/include/linux/string.h"
extern int __builtin_memcmp(void const * , void const * , __kernel_size_t ) ;
# 36 "linux-2.4.19/include/asm/bitops.h"
__inline static void set_bit(int nr , void volatile *addr )
{

  {
# 38 "linux-2.4.19/include/asm/bitops.h"
  __asm__ volatile ("lock ; "
                       "btsl %1,%0": "=m" ((*((long volatile *)addr))): "Ir" (nr));
# 42 "linux-2.4.19/include/asm/bitops.h"
  return;
}
}
# 71 "linux-2.4.19/include/asm/bitops.h"
__inline static void clear_bit(int nr , void volatile *addr )
{

  {
# 73 "linux-2.4.19/include/asm/bitops.h"
  __asm__ volatile ("lock ; "
                       "btrl %1,%0": "=m" ((*((long volatile *)addr))): "Ir" (nr));
# 77 "linux-2.4.19/include/asm/bitops.h"
  return;
}
}
# 162 "linux-2.4.19/include/asm/bitops.h"
__inline static int test_and_clear_bit(int nr , void volatile *addr )
{ int oldbit ;

  {
# 166 "linux-2.4.19/include/asm/bitops.h"
  __asm__ volatile ("lock ; "
                       "btrl %2,%1\n\tsbbl %0,%0": "=r" (oldbit), "=m" ((*((long volatile *)addr))): "Ir" (nr): "memory");
# 170 "linux-2.4.19/include/asm/bitops.h"
  return (oldbit);
}
}
# 233 "linux-2.4.19/include/asm/bitops.h"
__inline static int constant_test_bit(int nr , void const volatile *addr )
{

  {
# 235 "linux-2.4.19/include/asm/bitops.h"
  return (((1UL << (nr & 31)) & (unsigned long )(*((unsigned int const volatile *)addr + (nr >> 5)))) != 0UL);
}
}
# 325 "linux-2.4.19/include/asm/bitops.h"
__inline static unsigned long ffz(unsigned long word )
{

  {
# 327 "linux-2.4.19/include/asm/bitops.h"
  __asm__ ("bsfl %1,%0": "=r" (word): "r" (~ word));
# 330 "linux-2.4.19/include/asm/bitops.h"
  return (word);
}
}
# 203 "linux-2.4.19/include/asm/system.h"
__inline static unsigned long __xchg(unsigned long x , void volatile *ptr , int size )
{

  {
# 205 "linux-2.4.19/include/asm/system.h"
  switch (size) {
  case 1:
# 207 "linux-2.4.19/include/asm/system.h"
  __asm__ volatile ("xchgb %b0,%1": "=q" (x): "m" ((*((struct __xchg_dummy *)ptr))),
                       "0" (x): "memory");
# 211 "linux-2.4.19/include/asm/system.h"
  break;
  case 2:
# 213 "linux-2.4.19/include/asm/system.h"
  __asm__ volatile ("xchgw %w0,%1": "=r" (x): "m" ((*((struct __xchg_dummy *)ptr))),
                       "0" (x): "memory");
# 217 "linux-2.4.19/include/asm/system.h"
  break;
  case 4:
# 219 "linux-2.4.19/include/asm/system.h"
  __asm__ volatile ("xchgl %0,%1": "=r" (x): "m" ((*((struct __xchg_dummy *)ptr))),
                       "0" (x): "memory");
# 223 "linux-2.4.19/include/asm/system.h"
  break;
  }
# 225 "linux-2.4.19/include/asm/system.h"
  return (x);
}
}
# 73 "linux-2.4.19/include/asm/semaphore.h"
__inline static void sema_init(struct semaphore *sem , int val )
{

  {
# 81 "linux-2.4.19/include/asm/semaphore.h"
  sem->count.counter = (int volatile )val;
# 82 "linux-2.4.19/include/asm/semaphore.h"
  sem->sleepers = 0;
# 83 "linux-2.4.19/include/asm/semaphore.h"
  init_waitqueue_head(& sem->wait);
# 87 "linux-2.4.19/include/asm/semaphore.h"
  return;
}
}
# 89 "linux-2.4.19/include/asm/semaphore.h"
__inline static void init_MUTEX(struct semaphore *sem )
{

  {
# 91 "linux-2.4.19/include/asm/semaphore.h"
  sema_init(sem, 1);
# 92 "linux-2.4.19/include/asm/semaphore.h"
  return;
}
}
# 114 "linux-2.4.19/include/asm/semaphore.h"
__inline static void down(struct semaphore *sem )
{

  {
# 120 "linux-2.4.19/include/asm/semaphore.h"
  __asm__ volatile ("# atomic down operation\n\t"
                       "lock ; "
                       "decl %0\n\t"
                       "js 2f\n"
                       "1:\n"
                       ".subsection 1\n\t"
                       ""
                       ".ifndef "
                       ".text.lock."
                       "md"
                       "\n\t"
                       ".text.lock."
                       "md"
                       ":\n\t"
                       ".endif\n\t"
                       "2:\tcall __down_failed\n\t"
                       "jmp 1b\n"
                       ".previous\n\t": "=m" (sem->count): "c" (sem): "memory");
# 132 "linux-2.4.19/include/asm/semaphore.h"
  return;
}
}
# 138 "linux-2.4.19/include/asm/semaphore.h"
__inline static int down_interruptible(struct semaphore *sem )
{ int result ;

  {
# 146 "linux-2.4.19/include/asm/semaphore.h"
  __asm__ volatile ("# atomic interruptible down operation\n\t"
                       "lock ; "
                       "decl %1\n\t"
                       "js 2f\n\t"
                       "xorl %0,%0\n"
                       "1:\n"
                       ".subsection 1\n\t"
                       ""
                       ".ifndef "
                       ".text.lock."
                       "md"
                       "\n\t"
                       ".text.lock."
                       "md"
                       ":\n\t"
                       ".endif\n\t"
                       "2:\tcall __down_failed_interruptible\n\t"
                       "jmp 1b\n"
                       ".previous\n\t": "=a" (result), "=m" (sem->count): "c" (sem): "memory");
# 159 "linux-2.4.19/include/asm/semaphore.h"
  return (result);
}
}
# 196 "linux-2.4.19/include/asm/semaphore.h"
__inline static void up(struct semaphore *sem )
{

  {
# 201 "linux-2.4.19/include/asm/semaphore.h"
  __asm__ volatile ("# atomic up operation\n\t"
                       "lock ; "
                       "incl %0\n\t"
                       "jle 2f\n"
                       "1:\n"
                       ".subsection 1\n\t"
                       ""
                       ".ifndef "
                       ".text.lock."
                       "md"
                       "\n\t"
                       ".text.lock."
                       "md"
                       ":\n\t"
                       ".endif\n\t"
                       "2:\tcall __up_wakeup\n\t"
                       "jmp 1b\n"
                       ".previous\n\t"
                       ".subsection 0\n": "=m" (sem->count): "c" (sem): "memory");
# 214 "linux-2.4.19/include/asm/semaphore.h"
  return;
}
}
# 69 "linux-2.4.19/include/linux/tqueue.h"
extern task_queue tq_disk ;
# 117 "linux-2.4.19/include/linux/tqueue.h"
extern void __run_task_queue(task_queue *list ) ;
# 119 "linux-2.4.19/include/linux/tqueue.h"
__inline static void run_task_queue(task_queue *list )
{ int tmp ;

  {
# 121 "linux-2.4.19/include/linux/tqueue.h"
  tmp = list_empty(list);
# 121 "linux-2.4.19/include/linux/tqueue.h"
  if (! tmp) {
# 122 "linux-2.4.19/include/linux/tqueue.h"
    __run_task_queue(list);
  }
# 123 "linux-2.4.19/include/linux/tqueue.h"
  return;
}
}
# 24 "linux-2.4.19/include/linux/completion.h"
__inline static void init_completion(struct completion *x )
{

  {
# 26 "linux-2.4.19/include/linux/completion.h"
  x->done = 0U;
# 27 "linux-2.4.19/include/linux/completion.h"
  init_waitqueue_head(& x->wait);
# 28 "linux-2.4.19/include/linux/completion.h"
  return;
}
}
# 30 "linux-2.4.19/include/linux/completion.h"
extern void ( __attribute__((__regparm__(3))) wait_for_completion)(struct completion * ) ;
# 31 "linux-2.4.19/include/linux/completion.h"
extern void ( __attribute__((__regparm__(3))) complete)(struct completion * ) ;
# 1077 "linux-2.4.19/include/linux/fs.h"
extern int register_blkdev(unsigned int , char const * , struct block_device_operations * ) ;
# 1079 "linux-2.4.19/include/linux/fs.h"
extern struct block_device *bdget(dev_t ) ;
# 1091 "linux-2.4.19/include/linux/fs.h"
extern int blkdev_get(struct block_device * , mode_t , unsigned int , int ) ;
# 1092 "linux-2.4.19/include/linux/fs.h"
extern int blkdev_put(struct block_device * , int ) ;
# 1118 "linux-2.4.19/include/linux/fs.h"
extern void refile_buffer(struct buffer_head *buf ) ;
# 1144 "linux-2.4.19/include/linux/fs.h"
__inline static void mark_buffer_uptodate(struct buffer_head *bh , int on )
{

  {
# 1146 "linux-2.4.19/include/linux/fs.h"
  if (on) {
# 1147 "linux-2.4.19/include/linux/fs.h"
    set_bit(0, (void volatile *)(& bh->b_state));
  } else {
# 1149 "linux-2.4.19/include/linux/fs.h"
    clear_bit(0, (void volatile *)(& bh->b_state));
  }
# 1150 "linux-2.4.19/include/linux/fs.h"
  return;
}
}
# 1154 "linux-2.4.19/include/linux/fs.h"
__inline static void __mark_buffer_clean(struct buffer_head *bh )
{

  {
# 1156 "linux-2.4.19/include/linux/fs.h"
  refile_buffer(bh);
# 1157 "linux-2.4.19/include/linux/fs.h"
  return;
}
}
# 1159 "linux-2.4.19/include/linux/fs.h"
__inline static void mark_buffer_clean(struct buffer_head *bh )
{ int tmp ;

  {
# 1161 "linux-2.4.19/include/linux/fs.h"
  tmp = test_and_clear_bit(1, (void volatile *)(& bh->b_state));
# 1161 "linux-2.4.19/include/linux/fs.h"
  if (tmp) {
# 1162 "linux-2.4.19/include/linux/fs.h"
    __mark_buffer_clean(bh);
  }
# 1163 "linux-2.4.19/include/linux/fs.h"
  return;
}
}
# 1167 "linux-2.4.19/include/linux/fs.h"
extern void ( __attribute__((__regparm__(3))) mark_buffer_dirty)(struct buffer_head *bh ) ;
# 1190 "linux-2.4.19/include/linux/fs.h"
__inline static void buffer_IO_error(struct buffer_head *bh )
{

  {
# 1192 "linux-2.4.19/include/linux/fs.h"
  mark_buffer_clean(bh);
# 1196 "linux-2.4.19/include/linux/fs.h"
  ((*(bh->b_end_io)))(bh, 0);
# 1197 "linux-2.4.19/include/linux/fs.h"
  return;
}
}
# 1209 "linux-2.4.19/include/linux/fs.h"
extern int invalidate_device(kdev_t , int ) ;
# 1222 "linux-2.4.19/include/linux/fs.h"
extern int fsync_dev(kdev_t ) ;
# 1371 "linux-2.4.19/include/linux/fs.h"
extern struct buffer_head *getblk(kdev_t , int , int ) ;
# 1372 "linux-2.4.19/include/linux/fs.h"
extern void ll_rw_block(int , int , struct buffer_head **bh ) ;
# 1375 "linux-2.4.19/include/linux/fs.h"
extern void __brelse(struct buffer_head * ) ;
# 1376 "linux-2.4.19/include/linux/fs.h"
__inline static void brelse(struct buffer_head *buf )
{

  {
# 1378 "linux-2.4.19/include/linux/fs.h"
  if (buf) {
# 1379 "linux-2.4.19/include/linux/fs.h"
    __brelse(buf);
  }
# 1380 "linux-2.4.19/include/linux/fs.h"
  return;
}
}
# 1387 "linux-2.4.19/include/linux/fs.h"
extern int set_blocksize(kdev_t , int ) ;
# 1390 "linux-2.4.19/include/linux/fs.h"
extern struct buffer_head *bread(kdev_t , int , int ) ;
# 1460 "linux-2.4.19/include/linux/fs.h"
extern struct super_block *get_super(kdev_t ) ;
# 1461 "linux-2.4.19/include/linux/fs.h"
extern void drop_super(struct super_block *sb ) ;
# 1462 "linux-2.4.19/include/linux/fs.h"
__inline static int is_mounted(kdev_t dev )
{ struct super_block *sb ;
  struct super_block *tmp ;

  {
# 1464 "linux-2.4.19/include/linux/fs.h"
  tmp = get_super(dev);
# 1464 "linux-2.4.19/include/linux/fs.h"
  sb = tmp;
# 1465 "linux-2.4.19/include/linux/fs.h"
  if (sb) {
# 1466 "linux-2.4.19/include/linux/fs.h"
    drop_super(sb);
# 1467 "linux-2.4.19/include/linux/fs.h"
    return (1);
  }
# 1469 "linux-2.4.19/include/linux/fs.h"
  return (0);
}
}
# 1485 "linux-2.4.19/include/linux/fs.h"
extern int read_ahead[] ;
# 200 "linux-2.4.19/include/linux/signal.h"
__inline static void siginitsetinv(sigset_t *set , unsigned long mask )
{

  {
# 202 "linux-2.4.19/include/linux/signal.h"
  set->sig[0] = ~ mask;
# 203 "linux-2.4.19/include/linux/signal.h"
  switch (2) {
  default:
# 205 "linux-2.4.19/include/linux/signal.h"
  __constant_c_and_count_memset((void *)(& set->sig[1]), 4294967295UL, sizeof(long ));
# 206 "linux-2.4.19/include/linux/signal.h"
  break;
  case 2:
# 207 "linux-2.4.19/include/linux/signal.h"
  set->sig[1] = 4294967295UL;
  case 1: ;
  }
# 210 "linux-2.4.19/include/linux/signal.h"
  return;
}
}
# 158 "linux-2.4.19/include/linux/sched.h"
extern long ( __attribute__((__regparm__(3))) schedule_timeout)(long timeout ) ;
# 159 "linux-2.4.19/include/linux/sched.h"
extern void ( __attribute__((__regparm__(0))) schedule)(void) ;
# 6 "linux-2.4.19/include/asm/current.h"
__inline static struct task_struct *get_current(void)
{ struct task_struct *current ;

  {
# 9 "linux-2.4.19/include/asm/current.h"
  __asm__ ("andl %%esp,%0; ": "=r" (current): "0" (~ 8191UL));
# 10 "linux-2.4.19/include/asm/current.h"
  return (current);
}
}
# 583 "linux-2.4.19/include/linux/sched.h"
extern unsigned long volatile jiffies ;
# 586 "linux-2.4.19/include/linux/sched.h"
extern struct timeval xtime ;
# 595 "linux-2.4.19/include/linux/sched.h"
extern void ( __attribute__((__regparm__(3))) __wake_up)(wait_queue_head_t *q , unsigned int mode ,
                                                         int nr ) ;
# 600 "linux-2.4.19/include/linux/sched.h"
extern void ( __attribute__((__regparm__(3))) interruptible_sleep_on)(wait_queue_head_t *q ) ;
# 621 "linux-2.4.19/include/linux/sched.h"
extern void flush_signals(struct task_struct * ) ;
# 636 "linux-2.4.19/include/linux/sched.h"
extern int send_sig(int , struct task_struct * , int ) ;
# 643 "linux-2.4.19/include/linux/sched.h"
__inline static int signal_pending(struct task_struct *p )
{

  {
# 645 "linux-2.4.19/include/linux/sched.h"
  return (p->sigpending != 0);
}
}
# 743 "linux-2.4.19/include/linux/sched.h"
__inline static int capable(int cap )
{ struct task_struct *tmp ;
  struct task_struct *tmp___0 ;

  {
# 746 "linux-2.4.19/include/linux/sched.h"
  tmp___0 = get_current();
# 746 "linux-2.4.19/include/linux/sched.h"
  if (tmp___0->cap_effective & (unsigned int )(1 << cap)) {
# 751 "linux-2.4.19/include/linux/sched.h"
    tmp = get_current();
# 751 "linux-2.4.19/include/linux/sched.h"
    tmp->flags |= 256UL;
# 752 "linux-2.4.19/include/linux/sched.h"
    return (1);
  }
# 754 "linux-2.4.19/include/linux/sched.h"
  return (0);
}
}
# 798 "linux-2.4.19/include/linux/sched.h"
extern void daemonize(void) ;
# 803 "linux-2.4.19/include/linux/sched.h"
extern void ( __attribute__((__regparm__(3))) add_wait_queue)(wait_queue_head_t *q ,
                                                              wait_queue_t *wait ) ;
# 805 "linux-2.4.19/include/linux/sched.h"
extern void ( __attribute__((__regparm__(3))) remove_wait_queue)(wait_queue_head_t *q ,
                                                                 wait_queue_t *wait ) ;
# 117 "linux-2.4.19/include/linux/mm.h"
extern int vm_max_readahead ;
# 440 "linux-2.4.19/include/linux/mm.h"
extern unsigned long ( __attribute__((__regparm__(3))) __get_free_pages)(unsigned int gfp_mask ,
                                                                         unsigned int order ) ;
# 458 "linux-2.4.19/include/linux/mm.h"
extern void ( __attribute__((__regparm__(3))) free_pages)(unsigned long addr , unsigned int order ) ;
# 133 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
__inline static devfs_handle_t devfs_register(devfs_handle_t dir , char const *name ,
                                              unsigned int flags , unsigned int major ,
                                              unsigned int minor , umode_t mode ,
                                              void *ops , void *info )
{

  {
# 141 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  return ((struct devfs_entry *)((void *)0));
}
}
# 153 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
__inline static devfs_handle_t devfs_mk_dir(devfs_handle_t dir , char const *name ,
                                            void *info )
{

  {
# 156 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  return ((struct devfs_entry *)((void *)0));
}
}
# 167 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
__inline static devfs_handle_t devfs_find_handle(devfs_handle_t dir , char const *name ,
                                                 unsigned int major , unsigned int minor ,
                                                 char type , int traverse_symlinks )
{

  {
# 174 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  return ((struct devfs_entry *)((void *)0));
}
}
# 184 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
__inline static int devfs_get_maj_min(devfs_handle_t de , unsigned int *major , unsigned int *minor )
{

  {
# 187 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  return (0);
}
}
# 249 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
__inline static int devfs_register_blkdev(unsigned int major , char const *name ,
                                          struct block_device_operations *bdops )
{ int tmp ;

  {
# 252 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  tmp = register_blkdev(major, name, bdops);
# 252 "linux-2.4.19/include/linux/devfs_fs_kernel.h"
  return (tmp);
}
}
# 108 "linux-2.4.19/include/linux/genhd.h"
extern void add_gendisk(struct gendisk *gp ) ;
# 110 "linux-2.4.19/include/linux/genhd.h"
extern struct gendisk *get_gendisk(kdev_t dev ) ;
# 260 "linux-2.4.19/include/linux/genhd.h"
extern char *disk_name(struct gendisk *hd , int minor , char *buf ) ;
# 283 "linux-2.4.19/include/linux/genhd.h"
__inline static unsigned int disk_index(kdev_t dev )
{ int major ;
  int minor ;
  unsigned int index ;

  {
# 285 "linux-2.4.19/include/linux/genhd.h"
  major = (int )((unsigned int )((int )dev >> 8));
# 286 "linux-2.4.19/include/linux/genhd.h"
  minor = (int )((unsigned int )dev & 255U);
# 289 "linux-2.4.19/include/linux/genhd.h"
  switch (major) {
  case 48:
# 291 "linux-2.4.19/include/linux/genhd.h"
  index = (unsigned int )((minor & 248) >> 3);
# 292 "linux-2.4.19/include/linux/genhd.h"
  break;
  case 8:
# 294 "linux-2.4.19/include/linux/genhd.h"
  index = (unsigned int )((minor & 240) >> 4);
# 295 "linux-2.4.19/include/linux/genhd.h"
  break;
  case 3:
  case 13:
# 298 "linux-2.4.19/include/linux/genhd.h"
  index = (unsigned int )((minor & 64) >> 6);
# 299 "linux-2.4.19/include/linux/genhd.h"
  break;
  case 22:
# 301 "linux-2.4.19/include/linux/genhd.h"
  index = (unsigned int )(((minor & 64) >> 6) + 2);
# 302 "linux-2.4.19/include/linux/genhd.h"
  break;
  default: ;
# 304 "linux-2.4.19/include/linux/genhd.h"
  return (0U);
  }
# 306 "linux-2.4.19/include/linux/genhd.h"
  return (index);
}
}
# 161 "linux-2.4.19/include/linux/blkdev.h"
extern struct blk_dev_struct blk_dev[255] ;
# 163 "linux-2.4.19/include/linux/blkdev.h"
extern void register_disk(struct gendisk *dev , kdev_t first , unsigned int minors ,
                          struct block_device_operations *ops , long size ) ;
# 165 "linux-2.4.19/include/linux/blkdev.h"
extern request_queue_t *blk_get_queue(kdev_t dev ) ;
# 175 "linux-2.4.19/include/linux/blkdev.h"
extern void blk_queue_make_request(request_queue_t * , make_request_fn * ) ;
# 178 "linux-2.4.19/include/linux/blkdev.h"
extern int *blk_size[255] ;
# 180 "linux-2.4.19/include/linux/blkdev.h"
extern int *blksize_size[255] ;
# 182 "linux-2.4.19/include/linux/blkdev.h"
extern int *hardsect_size[255] ;
# 184 "linux-2.4.19/include/linux/blkdev.h"
extern int *max_readahead[255] ;
# 204 "linux-2.4.19/include/linux/blkdev.h"
__inline static int get_hardsect_size(kdev_t dev )
{ int retval ;
  int major ;
  int minor ;

  {
# 206 "linux-2.4.19/include/linux/blkdev.h"
  retval = 512;
# 207 "linux-2.4.19/include/linux/blkdev.h"
  major = (int )((unsigned int )((int )dev >> 8));
# 209 "linux-2.4.19/include/linux/blkdev.h"
  if (hardsect_size[major]) {
# 210 "linux-2.4.19/include/linux/blkdev.h"
    minor = (int )((unsigned int )dev & 255U);
# 211 "linux-2.4.19/include/linux/blkdev.h"
    if ((*(hardsect_size[major] + minor))) {
# 212 "linux-2.4.19/include/linux/blkdev.h"
      retval = (*(hardsect_size[major] + minor));
    }
  }
# 214 "linux-2.4.19/include/linux/blkdev.h"
  return (retval);
}
}
# 61 "linux-2.4.19/include/linux/slab.h"
extern void *kmalloc(size_t , int ) ;
# 62 "linux-2.4.19/include/linux/slab.h"
extern void kfree(void const * ) ;
# 93 "linux-2.4.19/include/linux/proc_fs.h"
extern struct proc_dir_entry *create_proc_entry(char const *name , mode_t mode ,
                                                struct proc_dir_entry *parent ) ;
# 147 "linux-2.4.19/include/linux/proc_fs.h"
__inline static struct proc_dir_entry *create_proc_read_entry(char const *name ,
                                                              mode_t mode , struct proc_dir_entry *base ,
                                                              read_proc_t *read_proc ,
                                                              void *data )
{ struct proc_dir_entry *res ;
  struct proc_dir_entry *tmp ;

  {
# 151 "linux-2.4.19/include/linux/proc_fs.h"
  tmp = create_proc_entry(name, mode, base);
# 151 "linux-2.4.19/include/linux/proc_fs.h"
  res = tmp;
# 152 "linux-2.4.19/include/linux/proc_fs.h"
  if (res) {
# 153 "linux-2.4.19/include/linux/proc_fs.h"
    res->read_proc = read_proc;
# 154 "linux-2.4.19/include/linux/proc_fs.h"
    res->data = data;
  }
# 156 "linux-2.4.19/include/linux/proc_fs.h"
  return (res);
}
}
# 11 "linux-2.4.19/include/asm/smplock.h"
extern spinlock_cacheline_t kernel_flag_cacheline ;
# 44 "linux-2.4.19/include/asm/smplock.h"
__inline static void lock_kernel(void)
{ struct task_struct *tmp ;

  {
# 47 "linux-2.4.19/include/asm/smplock.h"
  tmp = get_current();
# 47 "linux-2.4.19/include/asm/smplock.h"
  tmp->lock_depth ++;
# 47 "linux-2.4.19/include/asm/smplock.h"
  if (! tmp->lock_depth) {
# 48 "linux-2.4.19/include/asm/smplock.h"
    spin_lock(& kernel_flag_cacheline.lock);
  }
# 58 "linux-2.4.19/include/asm/smplock.h"
  return;
}
}
# 60 "linux-2.4.19/include/asm/smplock.h"
__inline static void unlock_kernel(void)
{ struct task_struct *tmp ;
  struct task_struct *tmp___0 ;

  {
# 62 "linux-2.4.19/include/asm/smplock.h"
  tmp = get_current();
# 62 "linux-2.4.19/include/asm/smplock.h"
  if (tmp->lock_depth < 0) {
# 63 "linux-2.4.19/include/asm/smplock.h"
    __out_of_line_bug(63);
  }
# 65 "linux-2.4.19/include/asm/smplock.h"
  tmp___0 = get_current();
# 65 "linux-2.4.19/include/asm/smplock.h"
  tmp___0->lock_depth --;
# 65 "linux-2.4.19/include/asm/smplock.h"
  if (tmp___0->lock_depth < 0) {
# 66 "linux-2.4.19/include/asm/smplock.h"
    spin_unlock(& kernel_flag_cacheline.lock);
  }
# 76 "linux-2.4.19/include/asm/smplock.h"
  return;
}
}
# 13 "linux-2.4.19/include/asm/delay.h"
extern void __const_udelay(unsigned long usecs ) ;
# 132 "linux-2.4.19/include/asm/uaccess.h"
extern void __put_user_bad(void) ;
# 546 "linux-2.4.19/include/asm/uaccess.h"
__inline static unsigned long __constant_copy_to_user(void *to , void const *from ,
                                                      unsigned long n )
{ int __d0 ;
  int __d1 ;
  unsigned long flag ;
  unsigned long sum ;
  struct task_struct *tmp ;

  {
# 549 "linux-2.4.19/include/asm/uaccess.h"
  prefetch__extinline(from);
# 550 "linux-2.4.19/include/asm/uaccess.h"
  tmp = get_current();
# 550 "linux-2.4.19/include/asm/uaccess.h"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag), "=r" (sum): "1" (to),
            "g" ((int )n), "g" (tmp->addr_limit.seg));
# 550 "linux-2.4.19/include/asm/uaccess.h"
  if (flag == 0UL) {
# 551 "linux-2.4.19/include/asm/uaccess.h"
    while (1) {
# 551 "linux-2.4.19/include/asm/uaccess.h"
      switch ((int )(n & 3UL)) {
      default:
# 551 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\n"
                           ".section .fixup,\"ax\"\n"
                           "2:\tshl $2,%0\n"
                           "\tjmp 1b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,2b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 551 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 1:
# 551 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsb\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tshl $2,%0\n"
                           "4:\tincl %0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,3b\n"
                           "\t.long 1b,4b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 551 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 2:
# 551 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsw\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tshl $2,%0\n"
                           "4:\taddl $2,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,3b\n"
                           "\t.long 1b,4b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 551 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 3:
# 551 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsw\n"
                           "2:\tmovsb\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tshl $2,%0\n"
                           "5:\taddl $2,%0\n"
                           "6:\tincl %0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,4b\n"
                           "\t.long 1b,5b\n"
                           "\t.long 2b,6b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 551 "linux-2.4.19/include/asm/uaccess.h"
      break;
      }
# 551 "linux-2.4.19/include/asm/uaccess.h"
      break;
    }
  }
# 552 "linux-2.4.19/include/asm/uaccess.h"
  return (n);
}
}
# 555 "linux-2.4.19/include/asm/uaccess.h"
__inline static unsigned long __constant_copy_from_user(void *to , void const *from ,
                                                        unsigned long n )
{ int __d0 ;
  int __d1 ;
  unsigned long flag ;
  unsigned long sum ;
  struct task_struct *tmp ;

  {
# 558 "linux-2.4.19/include/asm/uaccess.h"
  tmp = get_current();
# 558 "linux-2.4.19/include/asm/uaccess.h"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag), "=r" (sum): "1" (from),
            "g" ((int )n), "g" (tmp->addr_limit.seg));
# 558 "linux-2.4.19/include/asm/uaccess.h"
  if (flag == 0UL) {
# 559 "linux-2.4.19/include/asm/uaccess.h"
    while (1) {
# 559 "linux-2.4.19/include/asm/uaccess.h"
      switch ((int )(n & 3UL)) {
      default:
# 559 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\n"
                           ".section .fixup,\"ax\"\n"
                           "2:\tpushl %0\n"
                           "\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\trep; stosl\n"
                           "\tpopl %%eax\n"
                           "\tpopl %0\n"
                           "\tshl $2,%0\n"
                           "\tjmp 1b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,2b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 559 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 1:
# 559 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsb\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tpushl %0\n"
                           "\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\trep; stosl\n"
                           "\tstosb\n"
                           "\tpopl %%eax\n"
                           "\tpopl %0\n"
                           "\tshl $2,%0\n"
                           "\tincl %0\n"
                           "\tjmp 2b\n"
                           "4:\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\tstosb\n"
                           "\tpopl %%eax\n"
                           "\tincl %0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,3b\n"
                           "\t.long 1b,4b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 559 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 2:
# 559 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsw\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tpushl %0\n"
                           "\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\trep; stosl\n"
                           "\tstosw\n"
                           "\tpopl %%eax\n"
                           "\tpopl %0\n"
                           "\tshl $2,%0\n"
                           "\taddl $2,%0\n"
                           "\tjmp 2b\n"
                           "4:\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\tstosw\n"
                           "\tpopl %%eax\n"
                           "\taddl $2,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,3b\n"
                           "\t.long 1b,4b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 559 "linux-2.4.19/include/asm/uaccess.h"
      break;
      case 3:
# 559 "linux-2.4.19/include/asm/uaccess.h"
      __asm__ volatile ("0:\trep; movsl\n"
                           "1:\tmovsw\n"
                           "2:\tmovsb\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tpushl %0\n"
                           "\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\trep; stosl\n"
                           "\tstosw\n"
                           "\tstosb\n"
                           "\tpopl %%eax\n"
                           "\tpopl %0\n"
                           "\tshl $2,%0\n"
                           "\taddl $3,%0\n"
                           "\tjmp 2b\n"
                           "5:\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\tstosw\n"
                           "\tstosb\n"
                           "\tpopl %%eax\n"
                           "\taddl $3,%0\n"
                           "\tjmp 2b\n"
                           "6:\tpushl %%eax\n"
                           "\txorl %%eax,%%eax\n"
                           "\tstosb\n"
                           "\tpopl %%eax\n"
                           "\tincl %0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 0b,4b\n"
                           "\t.long 1b,5b\n"
                           "\t.long 2b,6b\n"
                           ".previous": "=c" (n), "=&S" (__d0), "=&D" (__d1): "1" (from),
                           "2" (to), "0" (n / 4UL): "memory");
# 559 "linux-2.4.19/include/asm/uaccess.h"
      break;
      }
# 559 "linux-2.4.19/include/asm/uaccess.h"
      break;
    }
  } else {
# 561 "linux-2.4.19/include/asm/uaccess.h"
    __constant_c_memset(to, 0UL, (unsigned int )n);
  }
# 562 "linux-2.4.19/include/asm/uaccess.h"
  return (n);
}
}
# 17 "linux-2.4.19/include/asm/checksum.h"
extern unsigned int ( __attribute__((__regparm__(0))) csum_partial)(unsigned char const *buff ,
                                                                    int len , unsigned int sum ) ;
# 56 "linux-2.4.19/include/linux/random.h"
extern void get_random_bytes(void *buf , int nbytes ) ;
# 15 "linux-2.4.19/include/linux/locks.h"
extern void __wait_on_buffer(struct buffer_head * ) ;
# 17 "linux-2.4.19/include/linux/locks.h"
__inline static void wait_on_buffer(struct buffer_head *bh )
{ int tmp ;

  {
# 19 "linux-2.4.19/include/linux/locks.h"
  tmp = constant_test_bit(2, (void const volatile *)(& bh->b_state));
# 19 "linux-2.4.19/include/linux/locks.h"
  if (tmp) {
# 20 "linux-2.4.19/include/linux/locks.h"
    __wait_on_buffer(bh);
  }
# 21 "linux-2.4.19/include/linux/locks.h"
  return;
}
}
# 35 "linux-2.4.19/include/linux/kernel_stat.h"
extern struct kernel_stat kstat ;
# 37 "linux-2.4.19/include/linux/reboot.h"
extern int register_reboot_notifier(struct notifier_block * ) ;
# 59 "linux-2.4.19/include/linux/blkpg.h"
char *partition_name(kdev_t dev ) ;
# 60 "linux-2.4.19/include/linux/blkpg.h"
extern int blk_ioctl(kdev_t dev , unsigned int cmd , unsigned long arg ) ;
# 56 "linux-2.4.19/include/linux/raid/md_compatible.h"
__inline static int md_capable_admin(void)
{ int tmp ;

  {
# 58 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp = capable(21);
# 58 "linux-2.4.19/include/linux/raid/md_compatible.h"
  return (tmp);
}
}
# 65 "linux-2.4.19/include/linux/raid/md_compatible.h"
__inline static void md_flush_signals(void)
{ struct task_struct *tmp ;
  struct task_struct *tmp___0 ;
  struct task_struct *tmp___1 ;

  {
# 67 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp = get_current();
# 67 "linux-2.4.19/include/linux/raid/md_compatible.h"
  spin_lock(& tmp->sigmask_lock);
# 68 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp___0 = get_current();
# 68 "linux-2.4.19/include/linux/raid/md_compatible.h"
  flush_signals(tmp___0);
# 69 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp___1 = get_current();
# 69 "linux-2.4.19/include/linux/raid/md_compatible.h"
  spin_unlock(& tmp___1->sigmask_lock);
# 70 "linux-2.4.19/include/linux/raid/md_compatible.h"
  return;
}
}
# 73 "linux-2.4.19/include/linux/raid/md_compatible.h"
__inline static void md_init_signals(void)
{ struct task_struct *tmp ;
  struct task_struct *tmp___0 ;

  {
# 75 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp = get_current();
# 75 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp->exit_signal = 17;
# 76 "linux-2.4.19/include/linux/raid/md_compatible.h"
  tmp___0 = get_current();
# 76 "linux-2.4.19/include/linux/raid/md_compatible.h"
  siginitsetinv(& tmp___0->blocked, 256UL);
# 77 "linux-2.4.19/include/linux/raid/md_compatible.h"
  return;
}
}
# 166 "linux-2.4.19/include/linux/raid/md_p.h"
__inline static __u64 md_event(mdp_super_t *sb )
{ __u64 ev ;

  {
# 167 "linux-2.4.19/include/linux/raid/md_p.h"
  ev = (__u64 )sb->events_hi;
# 168 "linux-2.4.19/include/linux/raid/md_p.h"
  return ((ev << 32) | (unsigned long long )sb->events_lo);
}
}
# 28 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int pers_to_level(int pers )
{

  {
# 30 "linux-2.4.19/include/linux/raid/md_k.h"
  switch (pers) {
  case 7UL:
# 31 "linux-2.4.19/include/linux/raid/md_k.h"
  return (-4);
  case 6UL:
# 32 "linux-2.4.19/include/linux/raid/md_k.h"
  return (-3);
  case 5UL:
# 33 "linux-2.4.19/include/linux/raid/md_k.h"
  return (-2);
  case 1UL:
# 34 "linux-2.4.19/include/linux/raid/md_k.h"
  return (-1);
  case 2UL:
# 35 "linux-2.4.19/include/linux/raid/md_k.h"
  return (0);
  case 3UL:
# 36 "linux-2.4.19/include/linux/raid/md_k.h"
  return (1);
  case 4UL:
# 37 "linux-2.4.19/include/linux/raid/md_k.h"
  return (5);
  }
# 39 "linux-2.4.19/include/linux/raid/md_k.h"
  __asm__ volatile ("ud2\n"
                       "\t.word %c0\n"
                       "\t.long %c1\n": : "i" (39), "i" ("linux-2.4.19/include/linux/raid/md_k.h"));
# 40 "linux-2.4.19/include/linux/raid/md_k.h"
  return (0);
}
}
# 43 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int level_to_pers(int level )
{

  {
# 45 "linux-2.4.19/include/linux/raid/md_k.h"
  switch (level) {
  case -4:
# 46 "linux-2.4.19/include/linux/raid/md_k.h"
  return (7);
  case -3:
# 47 "linux-2.4.19/include/linux/raid/md_k.h"
  return (6);
  case -2:
# 48 "linux-2.4.19/include/linux/raid/md_k.h"
  return (5);
  case -1:
# 49 "linux-2.4.19/include/linux/raid/md_k.h"
  return (1);
  case 0:
# 50 "linux-2.4.19/include/linux/raid/md_k.h"
  return (2);
  case 1:
# 51 "linux-2.4.19/include/linux/raid/md_k.h"
  return (3);
  case 4:
  case 5:
# 53 "linux-2.4.19/include/linux/raid/md_k.h"
  return (4);
  }
# 55 "linux-2.4.19/include/linux/raid/md_k.h"
  return (0);
}
}
# 76 "linux-2.4.19/include/linux/raid/md_k.h"
dev_mapping_t mddev_map[256] ;
# 78 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static mddev_t *kdev_to_mddev(kdev_t dev )
{

  {
# 80 "linux-2.4.19/include/linux/raid/md_k.h"
  if ((unsigned int )((int )dev >> 8) != 9U) {
# 81 "linux-2.4.19/include/linux/raid/md_k.h"
    __asm__ volatile ("ud2\n"
                         "\t.word %c0\n"
                         "\t.long %c1\n": : "i" (81), "i" ("linux-2.4.19/include/linux/raid/md_k.h"));
  }
# 82 "linux-2.4.19/include/linux/raid/md_k.h"
  return (mddev_map[(unsigned int )dev & 255U].mddev);
}
}
# 96 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int disk_faulty(mdp_disk_t *d )
{

  {
# 98 "linux-2.4.19/include/linux/raid/md_k.h"
  return ((int )(d->state & 1U));
}
}
# 101 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int disk_active(mdp_disk_t *d )
{

  {
# 103 "linux-2.4.19/include/linux/raid/md_k.h"
  return ((int )(d->state & 2U));
}
}
# 106 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int disk_sync(mdp_disk_t *d )
{

  {
# 108 "linux-2.4.19/include/linux/raid/md_k.h"
  return ((int )(d->state & 4U));
}
}
# 111 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int disk_spare(mdp_disk_t *d )
{ int tmp ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;

  {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
  tmp = disk_sync(d);
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
  if (tmp) {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
    tmp___2 = 0;
  } else {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
    tmp___0 = disk_active(d);
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
    if (tmp___0) {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
      tmp___2 = 0;
    } else {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
      tmp___1 = disk_faulty(d);
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
      if (tmp___1) {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
        tmp___2 = 0;
      } else {
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
        tmp___2 = 1;
      }
    }
  }
# 113 "linux-2.4.19/include/linux/raid/md_k.h"
  return (tmp___2);
}
}
# 116 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int disk_removed(mdp_disk_t *d )
{

  {
# 118 "linux-2.4.19/include/linux/raid/md_k.h"
  return ((int )(d->state & 8U));
}
}
# 121 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_faulty(mdp_disk_t *d )
{

  {
# 123 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state |= 1U;
# 124 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 126 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_active(mdp_disk_t *d )
{

  {
# 128 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state |= 2U;
# 129 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 131 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_sync(mdp_disk_t *d )
{

  {
# 133 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state |= 4U;
# 134 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 136 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_spare(mdp_disk_t *d )
{

  {
# 138 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state = 0U;
# 139 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 141 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_removed(mdp_disk_t *d )
{

  {
# 143 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state = 9U;
# 144 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 146 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_inactive(mdp_disk_t *d )
{

  {
# 148 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state &= 4294967293U;
# 149 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 151 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void mark_disk_nonsync(mdp_disk_t *d )
{

  {
# 153 "linux-2.4.19/include/linux/raid/md_k.h"
  d->state &= 4294967291U;
# 154 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 252 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int mdidx(mddev_t *mddev )
{

  {
# 254 "linux-2.4.19/include/linux/raid/md_k.h"
  return (mddev->__minor);
}
}
# 257 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static kdev_t mddev_to_kdev(mddev_t *mddev )
{ int tmp ;

  {
# 259 "linux-2.4.19/include/linux/raid/md_k.h"
  tmp = mdidx(mddev);
# 259 "linux-2.4.19/include/linux/raid/md_k.h"
  return ((unsigned short )(2304 | tmp));
}
}
# 262 "linux-2.4.19/include/linux/raid/md_k.h"
mdk_rdev_t *find_rdev(mddev_t *mddev , kdev_t dev ) ;
# 263 "linux-2.4.19/include/linux/raid/md_k.h"
mdk_rdev_t *find_rdev_nr(mddev_t *mddev , int nr ) ;
# 264 "linux-2.4.19/include/linux/raid/md_k.h"
mdp_disk_t *get_spare(mddev_t *mddev ) ;
# 312 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static int lock_mddev(mddev_t *mddev )
{ int tmp ;

  {
# 314 "linux-2.4.19/include/linux/raid/md_k.h"
  tmp = down_interruptible(& mddev->reconfig_sem);
# 314 "linux-2.4.19/include/linux/raid/md_k.h"
  return (tmp);
}
}
# 317 "linux-2.4.19/include/linux/raid/md_k.h"
__inline static void unlock_mddev(mddev_t *mddev )
{

  {
# 319 "linux-2.4.19/include/linux/raid/md_k.h"
  up(& mddev->reconfig_sem);
# 320 "linux-2.4.19/include/linux/raid/md_k.h"
  return;
}
}
# 62 "linux-2.4.19/include/linux/raid/md.h"
int md_size[256] ;
# 63 "linux-2.4.19/include/linux/raid/md.h"
struct hd_struct md_hd_struct[256] ;
# 65 "linux-2.4.19/include/linux/raid/md.h"
void add_mddev_mapping(mddev_t *mddev , kdev_t dev , void *data ) ;
# 66 "linux-2.4.19/include/linux/raid/md.h"
void del_mddev_mapping(mddev_t *mddev , kdev_t dev ) ;
# 68 "linux-2.4.19/include/linux/raid/md.h"
int register_md_personality(int pnum , mdk_personality_t *p ) ;
# 69 "linux-2.4.19/include/linux/raid/md.h"
int unregister_md_personality(int pnum ) ;
# 70 "linux-2.4.19/include/linux/raid/md.h"
mdk_thread_t *md_register_thread(void (*run)(void *data ) , void *data , char const *name ) ;
# 72 "linux-2.4.19/include/linux/raid/md.h"
void md_unregister_thread(mdk_thread_t *thread ) ;
# 73 "linux-2.4.19/include/linux/raid/md.h"
void md_wakeup_thread(mdk_thread_t *thread ) ;
# 74 "linux-2.4.19/include/linux/raid/md.h"
void md_interrupt_thread(mdk_thread_t *thread ) ;
# 75 "linux-2.4.19/include/linux/raid/md.h"
int md_update_sb(mddev_t *mddev ) ;
# 76 "linux-2.4.19/include/linux/raid/md.h"
int md_do_sync(mddev_t *mddev , mdp_disk_t *spare ) ;
# 77 "linux-2.4.19/include/linux/raid/md.h"
void md_done_sync(mddev_t *mddev , int blocks , int ok ) ;
# 78 "linux-2.4.19/include/linux/raid/md.h"
void md_sync_acct(kdev_t dev , unsigned long nr_sectors ) ;
# 79 "linux-2.4.19/include/linux/raid/md.h"
void md_recover_arrays(void) ;
# 80 "linux-2.4.19/include/linux/raid/md.h"
int md_check_ordering(mddev_t *mddev ) ;
# 81 "linux-2.4.19/include/linux/raid/md.h"
int md_notify_reboot(struct notifier_block *this , unsigned long code , void *x ) ;
# 83 "linux-2.4.19/include/linux/raid/md.h"
int md_error(mddev_t *mddev , kdev_t rdev ) ;
# 84 "linux-2.4.19/include/linux/raid/md.h"
int md_run_setup(void) __attribute__((__section__(".text.init"))) ;
# 86 "linux-2.4.19/include/linux/raid/md.h"
void md_print_devices(void) ;
# 648 "linux-2.4.19/include/linux/sysctl.h"
extern int proc_dointvec(ctl_table * , int , struct file * , void * , size_t * ) ;
# 736 "linux-2.4.19/include/linux/sysctl.h"
extern struct ctl_table_header *register_sysctl_table(ctl_table *table , int insert_at_head ) ;
# 26 "linux-2.4.19/include/linux/kmod.h"
extern int request_module(char const *name ) ;
# 37 "linux-2.4.19/include/linux/blk.h"
int md_init(void) __attribute__((__section__(".text.init"))) ;
# 58 "linux-2.4.19/include/linux/blk.h"
extern void set_device_ro(kdev_t dev , int flag ) ;
# 62 "md.c"
static void autostart_arrays(void) ;
# 65 "md.c"
static mdk_personality_t *pers[8] ;
# 79 "md.c"
static int sysctl_speed_limit_min = 100;
# 80 "md.c"
static int sysctl_speed_limit_max = 100000;
# 82 "md.c"
static struct ctl_table_header *raid_table_header ;
# 84 "md.c"
static ctl_table raid_table[3] = { {1, "speed_limit_min", (void *)(& sysctl_speed_limit_min), (int )sizeof(int ),
      (mode_t )420, (ctl_table *)((void *)0), & proc_dointvec, (ctl_handler *)0, (struct proc_dir_entry *)0,
      (void *)0, (void *)0},
        {2, "speed_limit_max", (void *)(& sysctl_speed_limit_max), (int )sizeof(int ),
      (mode_t )420, (ctl_table *)((void *)0), & proc_dointvec, (ctl_handler *)0, (struct proc_dir_entry *)0,
      (void *)0, (void *)0},
        {0, (char const *)0, (void *)0, 0, (unsigned short)0, (ctl_table *)0, (proc_handler *)0,
      (ctl_handler *)0, (struct proc_dir_entry *)0, (void *)0, (void *)0}};
# 92 "md.c"
static ctl_table raid_dir_table[2] = { {4, "raid", (void *)0, 0, (mode_t )365, raid_table, (proc_handler *)0, (ctl_handler *)0,
      (struct proc_dir_entry *)0, (void *)0, (void *)0},
        {0, (char const *)0, (void *)0, 0, (unsigned short)0, (ctl_table *)0, (proc_handler *)0,
      (ctl_handler *)0, (struct proc_dir_entry *)0, (void *)0, (void *)0}};
# 97 "md.c"
static ctl_table raid_root_table[2] = { {7, "dev", (void *)0, 0, (mode_t )365, raid_dir_table, (proc_handler *)0, (ctl_handler *)0,
      (struct proc_dir_entry *)0, (void *)0, (void *)0},
        {0, (char const *)0, (void *)0, 0, (unsigned short)0, (ctl_table *)0, (proc_handler *)0,
      (ctl_handler *)0, (struct proc_dir_entry *)0, (void *)0, (void *)0}};
# 107 "md.c"
static int md_blocksizes[256] ;
# 108 "md.c"
static int md_hardsect_sizes[256] ;
# 109 "md.c"
static int md_maxreadahead[256] ;
# 110 "md.c"
static mdk_thread_t *md_recovery_thread ;
# 114 "md.c"
static struct block_device_operations md_fops ;
# 115 "md.c"
static devfs_handle_t devfs_handle ;
# 117 "md.c"
static struct gendisk md_gendisk =
# 117 "md.c"
     {9, "md", 0, 1, md_hd_struct, md_size, 256, (void *)0, (struct gendisk *)((void *)0),
    & md_fops, (devfs_handle_t *)0, (char *)0};
# 134 "md.c"
static struct list_head all_mddevs = {& all_mddevs, & all_mddevs};
# 143 "md.c"
void add_mddev_mapping(mddev_t *mddev , kdev_t dev , void *data )
{ unsigned int minor ;

  {
# 145 "md.c"
  minor = (unsigned int )dev & 255U;
# 147 "md.c"
  if ((unsigned int )((int )dev >> 8) != 9U) {
# 148 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 148);
# 148 "md.c"
    md_print_devices();
# 149 "md.c"
    return;
  }
# 151 "md.c"
  if (mddev_map[minor].mddev) {
# 152 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 152);
# 152 "md.c"
    md_print_devices();
# 153 "md.c"
    return;
  }
# 155 "md.c"
  mddev_map[minor].mddev = mddev;
# 156 "md.c"
  mddev_map[minor].data = data;
# 157 "md.c"
  return;
}
}
# 159 "md.c"
void del_mddev_mapping(mddev_t *mddev , kdev_t dev )
{ unsigned int minor ;

  {
# 161 "md.c"
  minor = (unsigned int )dev & 255U;
# 163 "md.c"
  if ((unsigned int )((int )dev >> 8) != 9U) {
# 164 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 164);
# 164 "md.c"
    md_print_devices();
# 165 "md.c"
    return;
  }
# 167 "md.c"
  if ((unsigned int )mddev_map[minor].mddev != (unsigned int )mddev) {
# 168 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 168);
# 168 "md.c"
    md_print_devices();
# 169 "md.c"
    return;
  }
# 171 "md.c"
  mddev_map[minor].mddev = (mddev_t *)((void *)0);
# 172 "md.c"
  mddev_map[minor].data = (void *)0;
# 173 "md.c"
  return;
}
}
# 175 "md.c"
static int md_make_request(request_queue_t *q , int rw , struct buffer_head *bh )
{ mddev_t *mddev ;
  mddev_t *tmp ;
  int tmp___0 ;

  {
# 177 "md.c"
  tmp = kdev_to_mddev(bh->b_rdev);
# 177 "md.c"
  mddev = tmp;
# 179 "md.c"
  if (mddev) {
# 179 "md.c"
    if (mddev->pers) {
# 180 "md.c"
      tmp___0 = ((*((mddev->pers)->make_request)))(mddev, rw, bh);
# 180 "md.c"
      return (tmp___0);
    } else {
# 182 "md.c"
      buffer_IO_error(bh);
# 183 "md.c"
      return (0);
    }
  } else {
# 182 "md.c"
    buffer_IO_error(bh);
# 183 "md.c"
    return (0);
  }
}
}
# 187 "md.c"
static mddev_t *alloc_mddev(kdev_t dev )
{ mddev_t *mddev ;

  {
# 191 "md.c"
  if ((unsigned int )((int )dev >> 8) != 9U) {
# 192 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 192);
# 192 "md.c"
    md_print_devices();
# 193 "md.c"
    return ((mddev_t *)0);
  }
# 195 "md.c"
  mddev = (mddev_t *)kmalloc(sizeof((*mddev)), 496);
# 196 "md.c"
  if (! mddev) {
# 197 "md.c"
    return ((mddev_t *)((void *)0));
  }
# 199 "md.c"
  __constant_c_and_count_memset((void *)mddev, 0UL, sizeof((*mddev)));
# 201 "md.c"
  mddev->__minor = (int )((unsigned int )dev & 255U);
# 202 "md.c"
  init_MUTEX(& mddev->reconfig_sem);
# 203 "md.c"
  init_MUTEX(& mddev->recovery_sem);
# 204 "md.c"
  init_MUTEX(& mddev->resync_sem);
# 205 "md.c"
  while (1) {
# 205 "md.c"
    mddev->disks.next = & mddev->disks;
# 205 "md.c"
    mddev->disks.prev = & mddev->disks;
# 205 "md.c"
    break;
  }
# 206 "md.c"
  while (1) {
# 206 "md.c"
    mddev->all_mddevs.next = & mddev->all_mddevs;
# 206 "md.c"
    mddev->all_mddevs.prev = & mddev->all_mddevs;
# 206 "md.c"
    break;
  }
# 207 "md.c"
  mddev->active.counter = (int volatile )0;
# 214 "md.c"
  add_mddev_mapping(mddev, dev, (void *)0);
# 215 "md.c"
  list_add(& mddev->all_mddevs, & all_mddevs);
# 217 "md.c"
  while (1) {
# 217 "md.c"
    break;
  }
# 219 "md.c"
  return (mddev);
}
}
# 222 "md.c"
mdk_rdev_t *find_rdev_nr(mddev_t *mddev , int nr )
{ mdk_rdev_t *rdev ;
  struct list_head *tmp ;

  {
# 227 "md.c"
  tmp = mddev->disks.next;
# 227 "md.c"
  while (1) {
# 227 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 227 "md.c"
    tmp = tmp->next;
# 227 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 227 "md.c"
      break;
    }
# 228 "md.c"
    if (rdev->desc_nr == nr) {
# 229 "md.c"
      return (rdev);
    }
  }
# 231 "md.c"
  return ((mdk_rdev_t *)((void *)0));
}
}
# 234 "md.c"
mdk_rdev_t *find_rdev(mddev_t *mddev , kdev_t dev )
{ struct list_head *tmp ;
  mdk_rdev_t *rdev ;

  {
# 239 "md.c"
  tmp = mddev->disks.next;
# 239 "md.c"
  while (1) {
# 239 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 239 "md.c"
    tmp = tmp->next;
# 239 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 239 "md.c"
      break;
    }
# 240 "md.c"
    if ((int )rdev->dev == (int )dev) {
# 241 "md.c"
      return (rdev);
    }
  }
# 243 "md.c"
  return ((mdk_rdev_t *)((void *)0));
}
}
# 246 "md.c"
static struct list_head device_names = {& device_names, & device_names};
# 251 "md.c"
char *partition_name(kdev_t dev ) ;
# 251 "md.c"
static char nomem[8] =
# 251 "md.c"
  { (char )'<', (char )'n', (char )'o', (char )'m',
        (char )'e', (char )'m', (char )'>', (char )'\000'};
# 248 "md.c"
char *partition_name(kdev_t dev )
{ struct gendisk *hd ;
  dev_name_t *dname ;
  struct list_head *tmp ;
  char const *tmp___1 ;

  {
# 253 "md.c"
  tmp = device_names.next;
# 255 "md.c"
  while ((unsigned int )tmp != (unsigned int )(& device_names)) {
# 256 "md.c"
    dname = (dev_name_t *)((char *)tmp - (unsigned long )(& ((dev_name_t *)0)->list));
# 257 "md.c"
    if ((int )dname->dev == (int )dev) {
# 258 "md.c"
      return (dname->name);
    }
# 259 "md.c"
    tmp = tmp->next;
  }
# 262 "md.c"
  dname = (dev_name_t *)kmalloc(sizeof((*dname)), 496);
# 264 "md.c"
  if (! dname) {
# 265 "md.c"
    return (nomem);
  }
# 269 "md.c"
  hd = get_gendisk(dev);
# 270 "md.c"
  dname->name = (char *)((void *)0);
# 271 "md.c"
  if (hd) {
# 272 "md.c"
    dname->name = disk_name(hd, (int )((unsigned int )dev & 255U), dname->namebuf);
  }
# 273 "md.c"
  if (! dname->name) {
# 274 "md.c"
    tmp___1 = kdevname(dev);
# 274 "md.c"
    sprintf(dname->namebuf, "[dev %s]", tmp___1);
# 275 "md.c"
    dname->name = dname->namebuf;
  }
# 278 "md.c"
  dname->dev = dev;
# 279 "md.c"
  while (1) {
# 279 "md.c"
    dname->list.next = & dname->list;
# 279 "md.c"
    dname->list.prev = & dname->list;
# 279 "md.c"
    break;
  }
# 280 "md.c"
  list_add(& dname->list, & device_names);
# 282 "md.c"
  return (dname->name);
}
}
# 285 "md.c"
static unsigned int calc_dev_sboffset(kdev_t dev , mddev_t *mddev , int persistent )
{ unsigned int size ;

  {
# 288 "md.c"
  size = 0U;
# 290 "md.c"
  if (blk_size[(unsigned int )((int )dev >> 8)]) {
# 291 "md.c"
    size = (unsigned int )(*(blk_size[(unsigned int )((int )dev >> 8)] + ((unsigned int )dev & 255U)));
  }
# 292 "md.c"
  if (persistent) {
# 293 "md.c"
    size = (size & 4294967232U) - 64U;
  }
# 294 "md.c"
  return (size);
}
}
# 297 "md.c"
static unsigned int calc_dev_size(kdev_t dev , mddev_t *mddev , int persistent )
{ unsigned int size ;

  {
# 301 "md.c"
  size = calc_dev_sboffset(dev, mddev, persistent);
# 302 "md.c"
  if (! mddev->sb) {
# 303 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 303);
# 303 "md.c"
    md_print_devices();
# 304 "md.c"
    return (size);
  }
# 306 "md.c"
  if ((mddev->sb)->chunk_size) {
# 307 "md.c"
    size &= ~ ((mddev->sb)->chunk_size / 1024U - 1U);
  }
# 308 "md.c"
  return (size);
}
}
# 311 "md.c"
static unsigned int zoned_raid_size(mddev_t *mddev )
{ unsigned int mask ;
  mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  int tmp___0 ;

  {
# 317 "md.c"
  if (! mddev->sb) {
# 318 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 318);
# 318 "md.c"
    md_print_devices();
# 319 "md.c"
    return (4294967274U);
  }
# 324 "md.c"
  mask = ~ ((mddev->sb)->chunk_size / 1024U - 1U);
# 326 "md.c"
  tmp = mddev->disks.next;
# 326 "md.c"
  while (1) {
# 326 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 326 "md.c"
    tmp = tmp->next;
# 326 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 326 "md.c"
      break;
    }
# 327 "md.c"
    rdev->size &= (unsigned long )mask;
# 328 "md.c"
    tmp___0 = mdidx(mddev);
# 328 "md.c"
    md_size[tmp___0] = (int )((unsigned long )md_size[tmp___0] + rdev->size);
  }
# 330 "md.c"
  return (0U);
}
}
# 341 "md.c"
int md_check_ordering(mddev_t *mddev )
{ int i ;
  int c ;
  mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  char *tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;

  {
# 350 "md.c"
  tmp = mddev->disks.next;
# 350 "md.c"
  while (1) {
# 350 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 350 "md.c"
    tmp = tmp->next;
# 350 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 350 "md.c"
      break;
    }
# 351 "md.c"
    if (rdev->faulty) {
# 352 "md.c"
      tmp___0 = partition_name(rdev->dev);
# 352 "md.c"
      tmp___1 = mdidx(mddev);
# 352 "md.c"
      printk("<3>md: md%d\'s device %s faulty, aborting.\n", tmp___1, tmp___0);
      goto abort;
    }
  }
# 358 "md.c"
  c = 0;
# 359 "md.c"
  tmp = mddev->disks.next;
# 359 "md.c"
  while (1) {
# 359 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 359 "md.c"
    tmp = tmp->next;
# 359 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 359 "md.c"
      break;
    }
# 360 "md.c"
    c ++;
  }
# 362 "md.c"
  if (c != mddev->nb_dev) {
# 363 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 363);
# 363 "md.c"
    md_print_devices();
    goto abort;
  }
# 366 "md.c"
  if ((__u32 )mddev->nb_dev != (mddev->sb)->raid_disks) {
# 367 "md.c"
    tmp___2 = mdidx(mddev);
# 367 "md.c"
    printk("<3>md: md%d, array needs %d disks, has %d, aborting.\n", tmp___2, (mddev->sb)->raid_disks,
           mddev->nb_dev);
    goto abort;
  }
# 374 "md.c"
  i = 0;
# 374 "md.c"
  while (i < mddev->nb_dev) {
# 375 "md.c"
    c = 0;
# 376 "md.c"
    tmp = mddev->disks.next;
# 376 "md.c"
    while (1) {
# 376 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 376 "md.c"
      tmp = tmp->next;
# 376 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 376 "md.c"
        break;
      }
# 377 "md.c"
      if (rdev->desc_nr == i) {
# 378 "md.c"
        c ++;
      }
    }
# 380 "md.c"
    if (! c) {
# 381 "md.c"
      tmp___3 = mdidx(mddev);
# 381 "md.c"
      printk("<3>md: md%d, missing disk #%d, aborting.\n", tmp___3, i);
      goto abort;
    }
# 385 "md.c"
    if (c > 1) {
# 386 "md.c"
      tmp___4 = mdidx(mddev);
# 386 "md.c"
      printk("<3>md: md%d, too many disks #%d, aborting.\n", tmp___4, i);
      goto abort;
    }
# 374 "md.c"
    i ++;
  }
# 391 "md.c"
  return (0);
  abort:
# 393 "md.c"
  return (1);
}
}
# 396 "md.c"
static void remove_descriptor(mdp_disk_t *disk , mdp_super_t *sb )
{ int tmp ;
  int tmp___0 ;

  {
# 398 "md.c"
  tmp___0 = disk_active(disk);
# 398 "md.c"
  if (tmp___0) {
# 399 "md.c"
    sb->working_disks --;
  } else {
# 401 "md.c"
    tmp = disk_spare(disk);
# 401 "md.c"
    if (tmp) {
# 402 "md.c"
      sb->spare_disks --;
# 403 "md.c"
      sb->working_disks --;
    } else {
# 405 "md.c"
      sb->failed_disks --;
    }
  }
# 408 "md.c"
  sb->nr_disks --;
# 409 "md.c"
  disk->major = 0U;
# 410 "md.c"
  disk->minor = 0U;
# 411 "md.c"
  mark_disk_removed(disk);
# 412 "md.c"
  return;
}
}
# 429 "md.c"
static int alloc_array_sb(mddev_t *mddev )
{

  {
# 431 "md.c"
  if (mddev->sb) {
# 432 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 432);
# 432 "md.c"
    md_print_devices();
# 433 "md.c"
    return (0);
  }
# 436 "md.c"
  mddev->sb = (mdp_super_t *)__get_free_pages(496U, 0U);
# 437 "md.c"
  if (! mddev->sb) {
# 438 "md.c"
    return (-12);
  }
# 439 "md.c"
  __constant_c_and_count_memset((void *)mddev->sb, 0UL, 4096U);
# 440 "md.c"
  return (0);
}
}
# 443 "md.c"
static int alloc_disk_sb(mdk_rdev_t *rdev )
{

  {
# 445 "md.c"
  if (rdev->sb) {
# 446 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 446);
# 446 "md.c"
    md_print_devices();
  }
# 448 "md.c"
  rdev->sb = (mdp_super_t *)__get_free_pages(496U, 0U);
# 449 "md.c"
  if (! rdev->sb) {
# 450 "md.c"
    printk("<1>md: out of memory.\n");
# 451 "md.c"
    return (-22);
  }
# 453 "md.c"
  __constant_c_and_count_memset((void *)rdev->sb, 0UL, 4096U);
# 455 "md.c"
  return (0);
}
}
# 458 "md.c"
static void free_disk_sb(mdk_rdev_t *rdev )
{

  {
# 460 "md.c"
  if (rdev->sb) {
# 461 "md.c"
    free_pages((unsigned long )rdev->sb, 0U);
# 462 "md.c"
    rdev->sb = (mdp_super_t *)((void *)0);
# 463 "md.c"
    rdev->sb_offset = 0UL;
# 464 "md.c"
    rdev->size = 0UL;
  } else {
# 466 "md.c"
    if (! rdev->faulty) {
# 467 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 467);
# 467 "md.c"
      md_print_devices();
    }
  }
# 469 "md.c"
  return;
}
}
# 471 "md.c"
static int read_disk_sb(mdk_rdev_t *rdev )
{ int ret ;
  struct buffer_head *bh ;
  kdev_t dev ;
  mdp_super_t *sb ;
  unsigned long sb_offset ;
  char *tmp ;

  {
# 473 "md.c"
  ret = -22;
# 474 "md.c"
  bh = (struct buffer_head *)((void *)0);
# 475 "md.c"
  dev = rdev->dev;
# 479 "md.c"
  if (! rdev->sb) {
# 480 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 480);
# 480 "md.c"
    md_print_devices();
    goto abort;
  }
# 488 "md.c"
  sb_offset = (unsigned long )calc_dev_sboffset(rdev->dev, rdev->mddev, 1);
# 489 "md.c"
  rdev->sb_offset = sb_offset;
# 490 "md.c"
  fsync_dev(dev);
# 491 "md.c"
  set_blocksize(dev, 4096);
# 492 "md.c"
  bh = bread(dev, (int )(sb_offset / 4UL), 4096);
# 494 "md.c"
  if (bh) {
# 495 "md.c"
    sb = (mdp_super_t *)bh->b_data;
# 496 "md.c"
    __constant_memcpy((void *)rdev->sb, (void const *)sb, 4096U);
  } else {
# 498 "md.c"
    tmp = partition_name(rdev->dev);
# 498 "md.c"
    printk("<3>md: disabled device %s, could not read superblock.\n", tmp);
    goto abort;
  }
# 501 "md.c"
  printk("<6> [events: %08lx]\n", (unsigned long )(rdev->sb)->events_lo);
# 502 "md.c"
  ret = 0;
  abort:
# 504 "md.c"
  if (bh) {
# 505 "md.c"
    brelse(bh);
  }
# 506 "md.c"
  return (ret);
}
}
# 509 "md.c"
static unsigned int calc_sb_csum(mdp_super_t *sb )
{ unsigned int disk_csum ;
  unsigned int csum ;

  {
# 513 "md.c"
  disk_csum = sb->sb_csum;
# 514 "md.c"
  sb->sb_csum = 0U;
# 515 "md.c"
  csum = csum_partial((unsigned char const *)((void *)sb), 4096, 0U);
# 516 "md.c"
  sb->sb_csum = disk_csum;
# 517 "md.c"
  return (csum);
}
}
# 524 "md.c"
static int check_disk_sb(mdk_rdev_t *rdev )
{ mdp_super_t *sb ;
  int ret ;
  char *tmp ;
  char *tmp___0 ;
  char *tmp___1 ;
  unsigned int tmp___2 ;

  {
# 527 "md.c"
  ret = -22;
# 529 "md.c"
  sb = rdev->sb;
# 530 "md.c"
  if (! sb) {
# 531 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 531);
# 531 "md.c"
    md_print_devices();
    goto abort;
  }
# 535 "md.c"
  if (sb->md_magic != 2838187772U) {
# 536 "md.c"
    tmp = partition_name(rdev->dev);
# 536 "md.c"
    printk("<3>md: invalid raid superblock magic on %s\n", tmp);
    goto abort;
  }
# 540 "md.c"
  if (sb->md_minor >= 256U) {
# 541 "md.c"
    tmp___0 = partition_name(rdev->dev);
# 541 "md.c"
    printk("<3>md: %s: invalid raid minor (%x)\n", tmp___0, sb->md_minor);
    goto abort;
  }
# 545 "md.c"
  tmp___2 = calc_sb_csum(sb);
# 545 "md.c"
  if (tmp___2 != sb->sb_csum) {
# 546 "md.c"
    tmp___1 = partition_name(rdev->dev);
# 546 "md.c"
    printk("<4>md: invalid superblock checksum on %s\n", tmp___1);
    goto abort;
  }
# 549 "md.c"
  ret = 0;
  abort:
# 551 "md.c"
  return (ret);
}
}
# 554 "md.c"
static kdev_t dev_unit(kdev_t dev )
{ unsigned int mask ;
  struct gendisk *hd ;
  struct gendisk *tmp ;

  {
# 557 "md.c"
  tmp = get_gendisk(dev);
# 557 "md.c"
  hd = tmp;
# 559 "md.c"
  if (! hd) {
# 560 "md.c"
    return ((unsigned short)0);
  }
# 561 "md.c"
  mask = (unsigned int )(~ ((1 << hd->minor_shift) - 1));
# 563 "md.c"
  return ((unsigned short )(((unsigned int )((int )dev >> 8) << 8) | (((unsigned int )dev & 255U) & mask)));
}
}
# 566 "md.c"
static mdk_rdev_t *match_dev_unit(mddev_t *mddev , kdev_t dev )
{ struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  kdev_t tmp___0 ;
  kdev_t tmp___1 ;

  {
# 571 "md.c"
  tmp = mddev->disks.next;
# 571 "md.c"
  while (1) {
# 571 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 571 "md.c"
    tmp = tmp->next;
# 571 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 571 "md.c"
      break;
    }
# 572 "md.c"
    tmp___0 = dev_unit(rdev->dev);
# 572 "md.c"
    tmp___1 = dev_unit(dev);
# 572 "md.c"
    if ((int )tmp___0 == (int )tmp___1) {
# 573 "md.c"
      return (rdev);
    }
  }
# 575 "md.c"
  return ((mdk_rdev_t *)((void *)0));
}
}
# 578 "md.c"
static int match_mddev_units(mddev_t *mddev1 , mddev_t *mddev2 )
{ struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  mdk_rdev_t *tmp___0 ;

  {
# 583 "md.c"
  tmp = mddev1->disks.next;
# 583 "md.c"
  while (1) {
# 583 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 583 "md.c"
    tmp = tmp->next;
# 583 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev1->disks))) {
# 583 "md.c"
      break;
    }
# 584 "md.c"
    tmp___0 = match_dev_unit(mddev2, rdev->dev);
# 584 "md.c"
    if (tmp___0) {
# 585 "md.c"
      return (1);
    }
  }
# 587 "md.c"
  return (0);
}
}
# 590 "md.c"
static struct list_head all_raid_disks = {& all_raid_disks, & all_raid_disks};
# 591 "md.c"
static struct list_head pending_raid_disks = {& pending_raid_disks, & pending_raid_disks};
# 593 "md.c"
static void bind_rdev_to_array(mdk_rdev_t *rdev , mddev_t *mddev )
{ mdk_rdev_t *same_pdev ;
  char *tmp ;
  char *tmp___0 ;
  int tmp___1 ;
  char *tmp___2 ;

  {
# 597 "md.c"
  if (rdev->mddev) {
# 598 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 598);
# 598 "md.c"
    md_print_devices();
# 599 "md.c"
    return;
  }
# 601 "md.c"
  same_pdev = match_dev_unit(mddev, rdev->dev);
# 602 "md.c"
  if (same_pdev) {
# 603 "md.c"
    tmp = partition_name(same_pdev->dev);
# 603 "md.c"
    tmp___0 = partition_name(rdev->dev);
# 603 "md.c"
    tmp___1 = mdidx(mddev);
# 603 "md.c"
    printk("<4>md%d: WARNING: %s appears to be on the same physical disk as %s. True\n     protection against single-disk failure might be compromised.\n",
           tmp___1, tmp___0, tmp);
  }
# 609 "md.c"
  list_add(& rdev->same_set, & mddev->disks);
# 610 "md.c"
  rdev->mddev = mddev;
# 611 "md.c"
  mddev->nb_dev ++;
# 612 "md.c"
  tmp___2 = partition_name(rdev->dev);
# 612 "md.c"
  printk("<6>md: bind<%s,%d>\n", tmp___2, mddev->nb_dev);
# 613 "md.c"
  return;
}
}
# 615 "md.c"
static void unbind_rdev_from_array(mdk_rdev_t *rdev )
{ char *tmp ;

  {
# 617 "md.c"
  if (! rdev->mddev) {
# 618 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 618);
# 618 "md.c"
    md_print_devices();
# 619 "md.c"
    return;
  }
# 621 "md.c"
  list_del(& rdev->same_set);
# 622 "md.c"
  while (1) {
# 622 "md.c"
    rdev->same_set.next = & rdev->same_set;
# 622 "md.c"
    rdev->same_set.prev = & rdev->same_set;
# 622 "md.c"
    break;
  }
# 623 "md.c"
  (rdev->mddev)->nb_dev --;
# 624 "md.c"
  tmp = partition_name(rdev->dev);
# 624 "md.c"
  printk("<6>md: unbind<%s,%d>\n", tmp, (rdev->mddev)->nb_dev);
# 626 "md.c"
  rdev->mddev = (mddev_t *)((void *)0);
# 627 "md.c"
  return;
}
}
# 636 "md.c"
static int lock_rdev(mdk_rdev_t *rdev )
{ int err ;
  struct block_device *bdev ;

  {
# 638 "md.c"
  err = 0;
# 641 "md.c"
  bdev = bdget(rdev->dev);
# 642 "md.c"
  if (! bdev) {
# 643 "md.c"
    return (-12);
  }
# 644 "md.c"
  err = blkdev_get(bdev, (unsigned short)3, 0U, 3);
# 645 "md.c"
  if (! err) {
# 646 "md.c"
    rdev->bdev = bdev;
  }
# 647 "md.c"
  return (err);
}
}
# 650 "md.c"
static void unlock_rdev(mdk_rdev_t *rdev )
{ struct block_device *bdev ;

  {
# 652 "md.c"
  bdev = rdev->bdev;
# 653 "md.c"
  rdev->bdev = (struct block_device *)((void *)0);
# 654 "md.c"
  if (! bdev) {
# 655 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 655);
# 655 "md.c"
    md_print_devices();
  }
# 656 "md.c"
  blkdev_put(bdev, 3);
# 657 "md.c"
  return;
}
}
# 659 "md.c"
void md_autodetect_dev(kdev_t dev ) ;
# 661 "md.c"
static void export_rdev(mdk_rdev_t *rdev )
{ char *tmp ;
  char *tmp___0 ;

  {
# 663 "md.c"
  tmp = partition_name(rdev->dev);
# 663 "md.c"
  printk("<6>md: export_rdev(%s)\n", tmp);
# 664 "md.c"
  if (rdev->mddev) {
# 665 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 665);
# 665 "md.c"
    md_print_devices();
  }
# 666 "md.c"
  unlock_rdev(rdev);
# 667 "md.c"
  free_disk_sb(rdev);
# 668 "md.c"
  list_del(& rdev->all);
# 669 "md.c"
  while (1) {
# 669 "md.c"
    rdev->all.next = & rdev->all;
# 669 "md.c"
    rdev->all.prev = & rdev->all;
# 669 "md.c"
    break;
  }
# 670 "md.c"
  if ((unsigned int )rdev->pending.next != (unsigned int )(& rdev->pending)) {
# 671 "md.c"
    tmp___0 = partition_name(rdev->dev);
# 671 "md.c"
    printk("<6>md: (%s was pending)\n", tmp___0);
# 673 "md.c"
    list_del(& rdev->pending);
# 674 "md.c"
    while (1) {
# 674 "md.c"
      rdev->pending.next = & rdev->pending;
# 674 "md.c"
      rdev->pending.prev = & rdev->pending;
# 674 "md.c"
      break;
    }
  }
# 677 "md.c"
  md_autodetect_dev(rdev->dev);
# 679 "md.c"
  rdev->dev = (unsigned short)0;
# 680 "md.c"
  rdev->faulty = 0;
# 681 "md.c"
  kfree((void const *)rdev);
# 682 "md.c"
  return;
}
}
# 684 "md.c"
static void kick_rdev_from_array(mdk_rdev_t *rdev )
{

  {
# 686 "md.c"
  unbind_rdev_from_array(rdev);
# 687 "md.c"
  export_rdev(rdev);
# 688 "md.c"
  return;
}
}
# 690 "md.c"
static void export_array(mddev_t *mddev )
{ struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  mdp_super_t *sb ;

  {
# 694 "md.c"
  sb = mddev->sb;
# 696 "md.c"
  if (mddev->sb) {
# 697 "md.c"
    mddev->sb = (mdp_super_t *)((void *)0);
# 698 "md.c"
    free_pages((unsigned long )sb, 0U);
  }
# 701 "md.c"
  tmp = mddev->disks.next;
# 701 "md.c"
  while (1) {
# 701 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 701 "md.c"
    tmp = tmp->next;
# 701 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 701 "md.c"
      break;
    }
# 702 "md.c"
    if (! rdev->mddev) {
# 703 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 703);
# 703 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 706 "md.c"
    kick_rdev_from_array(rdev);
    __Cont: ;
  }
# 708 "md.c"
  if (mddev->nb_dev) {
# 709 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 709);
# 709 "md.c"
    md_print_devices();
  }
# 710 "md.c"
  return;
}
}
# 712 "md.c"
static void free_mddev(mddev_t *mddev )
{ int tmp ;
  int tmp___0 ;
  int tmp___1 ;

  {
# 714 "md.c"
  if (! mddev) {
# 715 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 715);
# 715 "md.c"
    md_print_devices();
# 716 "md.c"
    return;
  }
# 719 "md.c"
  export_array(mddev);
# 720 "md.c"
  tmp = mdidx(mddev);
# 720 "md.c"
  md_size[tmp] = 0;
# 721 "md.c"
  tmp___0 = mdidx(mddev);
# 721 "md.c"
  md_hd_struct[tmp___0].nr_sects = 0UL;
# 727 "md.c"
  while (mddev->resync_sem.count.counter != 1) {
# 728 "md.c"
    schedule();
  }
# 729 "md.c"
  while (mddev->recovery_sem.count.counter != 1) {
# 730 "md.c"
    schedule();
  }
# 732 "md.c"
  tmp___1 = mdidx(mddev);
# 732 "md.c"
  del_mddev_mapping(mddev, (unsigned short )(2304 | tmp___1));
# 733 "md.c"
  list_del(& mddev->all_mddevs);
# 734 "md.c"
  while (1) {
# 734 "md.c"
    mddev->all_mddevs.next = & mddev->all_mddevs;
# 734 "md.c"
    mddev->all_mddevs.prev = & mddev->all_mddevs;
# 734 "md.c"
    break;
  }
# 735 "md.c"
  kfree((void const *)mddev);
# 736 "md.c"
  while (1) {
# 736 "md.c"
    break;
  }
# 737 "md.c"
  return;
}
}
# 744 "md.c"
static void print_desc(mdp_disk_t *desc )
{ char *tmp ;

  {
# 746 "md.c"
  tmp = partition_name((unsigned short )((desc->major << 8) | desc->minor));
# 746 "md.c"
  printk(" DISK<N:%d,%s(%d,%d),R:%d,S:%d>\n", desc->number, tmp, desc->major, desc->minor,
         desc->raid_disk, desc->state);
# 749 "md.c"
  return;
}
}
# 751 "md.c"
static void print_sb(mdp_super_t *sb )
{ int i ;
  mdp_disk_t *desc ;

  {
# 755 "md.c"
  printk("<6>md:  SB: (V:%d.%d.%d) ID:<%08x.%08x.%08x.%08x> CT:%08x\n", sb->major_version,
         sb->minor_version, sb->patch_version, sb->set_uuid0, sb->set_uuid1, sb->set_uuid2,
         sb->set_uuid3, sb->ctime);
# 759 "md.c"
  printk("<6>md:     L%d S%08d ND:%d RD:%d md%d LO:%d CS:%d\n", sb->level, sb->size,
         sb->nr_disks, sb->raid_disks, sb->md_minor, sb->layout, sb->chunk_size);
# 762 "md.c"
  printk("<6>md:     UT:%08x ST:%d AD:%d WD:%d FD:%d SD:%d CSUM:%08x E:%08lx\n", sb->utime,
         sb->state, sb->active_disks, sb->working_disks, sb->failed_disks, sb->spare_disks,
         sb->sb_csum, (unsigned long )sb->events_lo);
# 767 "md.c"
  printk("<6>");
# 768 "md.c"
  i = 0;
# 768 "md.c"
  while (i < 27) {
# 771 "md.c"
    desc = sb->disks + i;
# 772 "md.c"
    if (desc->number) {
# 774 "md.c"
      printk("     D %2d: ", i);
# 775 "md.c"
      print_desc(desc);
    } else {
# 772 "md.c"
      if (desc->major) {
# 774 "md.c"
        printk("     D %2d: ", i);
# 775 "md.c"
        print_desc(desc);
      } else {
# 772 "md.c"
        if (desc->minor) {
# 774 "md.c"
          printk("     D %2d: ", i);
# 775 "md.c"
          print_desc(desc);
        } else {
# 772 "md.c"
          if (desc->raid_disk) {
# 774 "md.c"
            printk("     D %2d: ", i);
# 775 "md.c"
            print_desc(desc);
          } else {
# 772 "md.c"
            if (desc->state) {
# 772 "md.c"
              if (desc->state != 4U) {
# 774 "md.c"
                printk("     D %2d: ", i);
# 775 "md.c"
                print_desc(desc);
              }
            }
          }
        }
      }
    }
# 768 "md.c"
    i ++;
  }
# 778 "md.c"
  printk("<6>md:     THIS: ");
# 779 "md.c"
  print_desc(& sb->this_disk);
# 781 "md.c"
  return;
}
}
# 783 "md.c"
static void print_rdev(mdk_rdev_t *rdev )
{ char *tmp ;
  char *tmp___0 ;

  {
# 785 "md.c"
  tmp = partition_name(rdev->old_dev);
# 785 "md.c"
  tmp___0 = partition_name(rdev->dev);
# 785 "md.c"
  printk("<6>md: rdev %s: O:%s, SZ:%08ld F:%d DN:%d ", tmp___0, tmp, rdev->size, rdev->faulty,
         rdev->desc_nr);
# 788 "md.c"
  if (rdev->sb) {
# 789 "md.c"
    printk("<6>md: rdev superblock:\n");
# 790 "md.c"
    print_sb(rdev->sb);
  } else {
# 792 "md.c"
    printk("<6>md: no rdev superblock!\n");
  }
# 793 "md.c"
  return;
}
}
# 795 "md.c"
void md_print_devices(void)
{ struct list_head *tmp ;
  struct list_head *tmp2 ;
  mdk_rdev_t *rdev ;
  mddev_t *mddev ;
  int tmp___0 ;
  char *tmp___1 ;

  {
# 801 "md.c"
  printk("\n");
# 802 "md.c"
  printk("md:\t**********************************\n");
# 803 "md.c"
  printk("md:\t* <COMPLETE RAID STATE PRINTOUT> *\n");
# 804 "md.c"
  printk("md:\t**********************************\n");
# 805 "md.c"
  tmp = all_mddevs.next;
# 805 "md.c"
  while (1) {
# 805 "md.c"
    mddev = (mddev_t *)((char *)tmp - (unsigned long )(& ((mddev_t *)0)->all_mddevs));
# 805 "md.c"
    tmp = tmp->next;
# 805 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& all_mddevs))) {
# 805 "md.c"
      break;
    }
# 806 "md.c"
    tmp___0 = mdidx(mddev);
# 806 "md.c"
    printk("md%d: ", tmp___0);
# 808 "md.c"
    tmp2 = mddev->disks.next;
# 808 "md.c"
    while (1) {
# 808 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp2 - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 808 "md.c"
      tmp2 = tmp2->next;
# 808 "md.c"
      if (! ((unsigned int )tmp2->prev != (unsigned int )(& mddev->disks))) {
# 808 "md.c"
        break;
      }
# 809 "md.c"
      tmp___1 = partition_name(rdev->dev);
# 809 "md.c"
      printk("<%s>", tmp___1);
    }
# 811 "md.c"
    if (mddev->sb) {
# 812 "md.c"
      printk(" array superblock:\n");
# 813 "md.c"
      print_sb(mddev->sb);
    } else {
# 815 "md.c"
      printk(" no array superblock.\n");
    }
# 817 "md.c"
    tmp2 = mddev->disks.next;
# 817 "md.c"
    while (1) {
# 817 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp2 - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 817 "md.c"
      tmp2 = tmp2->next;
# 817 "md.c"
      if (! ((unsigned int )tmp2->prev != (unsigned int )(& mddev->disks))) {
# 817 "md.c"
        break;
      }
# 818 "md.c"
      print_rdev(rdev);
    }
  }
# 820 "md.c"
  printk("md:\t**********************************\n");
# 821 "md.c"
  printk("\n");
# 822 "md.c"
  return;
}
}
# 824 "md.c"
static int sb_equal(mdp_super_t *sb1 , mdp_super_t *sb2 )
{ int ret ;
  mdp_super_t *tmp1 ;
  mdp_super_t *tmp2 ;
  int tmp ;

  {
# 829 "md.c"
  tmp1 = (mdp_super_t *)kmalloc(sizeof((*tmp1)), 496);
# 830 "md.c"
  tmp2 = (mdp_super_t *)kmalloc(sizeof((*tmp2)), 496);
# 832 "md.c"
  if (! tmp1) {
# 833 "md.c"
    ret = 0;
# 834 "md.c"
    printk("<6>md.c: sb1 is not equal to sb2!\n");
    goto abort;
  } else {
# 832 "md.c"
    if (! tmp2) {
# 833 "md.c"
      ret = 0;
# 834 "md.c"
      printk("<6>md.c: sb1 is not equal to sb2!\n");
      goto abort;
    }
  }
# 838 "md.c"
  (*tmp1) = (*sb1);
# 839 "md.c"
  (*tmp2) = (*sb2);
# 844 "md.c"
  tmp1->nr_disks = 0U;
# 845 "md.c"
  tmp2->nr_disks = 0U;
# 847 "md.c"
  tmp = __builtin_memcmp((void const *)tmp1, (void const *)tmp2, 128U);
# 847 "md.c"
  if (tmp) {
# 848 "md.c"
    ret = 0;
  } else {
# 850 "md.c"
    ret = 1;
  }
  abort:
# 853 "md.c"
  if (tmp1) {
# 854 "md.c"
    kfree((void const *)tmp1);
  }
# 855 "md.c"
  if (tmp2) {
# 856 "md.c"
    kfree((void const *)tmp2);
  }
# 858 "md.c"
  return (ret);
}
}
# 861 "md.c"
static int uuid_equal(mdk_rdev_t *rdev1 , mdk_rdev_t *rdev2 )
{

  {
# 863 "md.c"
  if ((rdev1->sb)->set_uuid0 == (rdev2->sb)->set_uuid0) {
# 863 "md.c"
    if ((rdev1->sb)->set_uuid1 == (rdev2->sb)->set_uuid1) {
# 863 "md.c"
      if ((rdev1->sb)->set_uuid2 == (rdev2->sb)->set_uuid2) {
# 863 "md.c"
        if ((rdev1->sb)->set_uuid3 == (rdev2->sb)->set_uuid3) {
# 868 "md.c"
          return (1);
        }
      }
    }
  }
# 870 "md.c"
  return (0);
}
}
# 873 "md.c"
static mdk_rdev_t *find_rdev_all(kdev_t dev )
{ struct list_head *tmp ;
  mdk_rdev_t *rdev ;

  {
# 878 "md.c"
  tmp = all_raid_disks.next;
# 879 "md.c"
  while ((unsigned int )tmp != (unsigned int )(& all_raid_disks)) {
# 880 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->all));
# 881 "md.c"
    if ((int )rdev->dev == (int )dev) {
# 882 "md.c"
      return (rdev);
    }
# 883 "md.c"
    tmp = tmp->next;
  }
# 885 "md.c"
  return ((mdk_rdev_t *)((void *)0));
}
}
# 891 "md.c"
static int write_disk_sb(mdk_rdev_t *rdev )
{ struct buffer_head *bh ;
  kdev_t dev ;
  unsigned long sb_offset ;
  unsigned long size ;
  mdp_super_t *sb ;
  char *tmp ;
  char *tmp___0 ;
  char *tmp___1 ;
  char *tmp___2 ;

  {
# 898 "md.c"
  if (! rdev->sb) {
# 899 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 899);
# 899 "md.c"
    md_print_devices();
# 900 "md.c"
    return (1);
  }
# 902 "md.c"
  if (rdev->faulty) {
# 903 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 903);
# 903 "md.c"
    md_print_devices();
# 904 "md.c"
    return (1);
  }
# 906 "md.c"
  if ((rdev->sb)->md_magic != 2838187772U) {
# 907 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 907);
# 907 "md.c"
    md_print_devices();
# 908 "md.c"
    return (1);
  }
# 911 "md.c"
  dev = rdev->dev;
# 912 "md.c"
  sb_offset = (unsigned long )calc_dev_sboffset(dev, rdev->mddev, 1);
# 913 "md.c"
  if (rdev->sb_offset != sb_offset) {
# 914 "md.c"
    tmp = partition_name(dev);
# 914 "md.c"
    printk("<6>%s\'s sb offset has changed from %ld to %ld, skipping\n", tmp, rdev->sb_offset,
           sb_offset);
    goto skip;
  }
# 923 "md.c"
  size = (unsigned long )calc_dev_size(dev, rdev->mddev, 1);
# 924 "md.c"
  if (size != rdev->size) {
# 925 "md.c"
    tmp___0 = partition_name(dev);
# 925 "md.c"
    printk("<6>%s\'s size has changed from %ld to %ld since import, skipping\n", tmp___0,
           rdev->size, size);
    goto skip;
  }
# 930 "md.c"
  tmp___1 = partition_name(dev);
# 930 "md.c"
  printk("<6>(write) %s\'s sb offset: %ld\n", tmp___1, sb_offset);
# 931 "md.c"
  fsync_dev(dev);
# 932 "md.c"
  set_blocksize(dev, 4096);
# 933 "md.c"
  bh = getblk(dev, (int )(sb_offset / 4UL), 4096);
# 934 "md.c"
  if (! bh) {
# 935 "md.c"
    tmp___2 = partition_name(dev);
# 935 "md.c"
    printk("<3>md: getblk failed for device %s\n", tmp___2);
# 936 "md.c"
    return (1);
  }
# 938 "md.c"
  __constant_c_memset((void *)bh->b_data, 0UL, (unsigned int )bh->b_size);
# 939 "md.c"
  sb = (mdp_super_t *)bh->b_data;
# 940 "md.c"
  __constant_memcpy((void *)sb, (void const *)rdev->sb, 4096U);
# 942 "md.c"
  mark_buffer_uptodate(bh, 1);
# 943 "md.c"
  mark_buffer_dirty(bh);
# 944 "md.c"
  ll_rw_block(1, 1, & bh);
# 945 "md.c"
  wait_on_buffer(bh);
# 946 "md.c"
  brelse(bh);
# 947 "md.c"
  fsync_dev(dev);
  skip:
# 949 "md.c"
  return (0);
}
}
# 953 "md.c"
static void set_this_disk(mddev_t *mddev , mdk_rdev_t *rdev )
{ int i ;
  int ok ;
  mdp_disk_t *desc ;

  {
# 955 "md.c"
  ok = 0;
# 958 "md.c"
  i = 0;
# 958 "md.c"
  while (i < 27) {
# 959 "md.c"
    desc = (mddev->sb)->disks + i;
# 967 "md.c"
    if (((desc->major << 8) | desc->minor) == (unsigned int )rdev->dev) {
# 968 "md.c"
      (rdev->sb)->this_disk = (*desc);
# 969 "md.c"
      rdev->desc_nr = (int )desc->number;
# 970 "md.c"
      ok = 1;
# 971 "md.c"
      break;
    }
# 958 "md.c"
    i ++;
  }
# 975 "md.c"
  if (! ok) {
# 976 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 976);
# 976 "md.c"
    md_print_devices();
  }
# 978 "md.c"
  return;
}
}
# 980 "md.c"
static int sync_sbs(mddev_t *mddev )
{ mdk_rdev_t *rdev ;
  mdp_super_t *sb ;
  struct list_head *tmp ;

  {
# 986 "md.c"
  tmp = mddev->disks.next;
# 986 "md.c"
  while (1) {
# 986 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 986 "md.c"
    tmp = tmp->next;
# 986 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 986 "md.c"
      break;
    }
# 987 "md.c"
    if (rdev->faulty) {
      goto __Cont;
    } else {
# 987 "md.c"
      if (rdev->alias_device) {
        goto __Cont;
      }
    }
# 989 "md.c"
    sb = rdev->sb;
# 990 "md.c"
    (*sb) = (*(mddev->sb));
# 991 "md.c"
    set_this_disk(mddev, rdev);
# 992 "md.c"
    sb->sb_csum = calc_sb_csum(sb);
    __Cont: ;
  }
# 994 "md.c"
  return (0);
}
}
# 997 "md.c"
int md_update_sb(mddev_t *mddev )
{ int err ;
  int count ;
  struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  void *tmp___0 ;
  int tmp___1 ;
  char *tmp___2 ;
  int tmp___3 ;

  {
# 999 "md.c"
  count = 100;
# 1003 "md.c"
  if (! mddev->sb_dirty) {
# 1004 "md.c"
    tmp___0 = __builtin_return_address(0U);
# 1004 "md.c"
    printk("hm, md_update_sb() called without ->sb_dirty == 1, from %p.\n", tmp___0);
# 1005 "md.c"
    return (0);
  }
# 1007 "md.c"
  mddev->sb_dirty = 0;
  repeat:
# 1009 "md.c"
  (mddev->sb)->utime = (unsigned int )xtime.tv_sec;
# 1010 "md.c"
  (mddev->sb)->events_lo ++;
# 1010 "md.c"
  if ((mddev->sb)->events_lo == 0U) {
# 1011 "md.c"
    (mddev->sb)->events_hi ++;
  }
# 1013 "md.c"
  if (((mddev->sb)->events_lo | (mddev->sb)->events_hi) == 0U) {
# 1019 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 1019);
# 1019 "md.c"
    md_print_devices();
# 1020 "md.c"
    (mddev->sb)->events_hi = 4294967295U;
# 1020 "md.c"
    (mddev->sb)->events_lo = (mddev->sb)->events_hi;
  }
# 1022 "md.c"
  sync_sbs(mddev);
# 1028 "md.c"
  if ((mddev->sb)->not_persistent) {
# 1029 "md.c"
    return (0);
  }
# 1031 "md.c"
  tmp___1 = mdidx(mddev);
# 1031 "md.c"
  printk("<6>md: updating md%d RAID superblock on device\n", tmp___1);
# 1034 "md.c"
  err = 0;
# 1035 "md.c"
  tmp = mddev->disks.next;
# 1035 "md.c"
  while (1) {
# 1035 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1035 "md.c"
    tmp = tmp->next;
# 1035 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1035 "md.c"
      break;
    }
# 1036 "md.c"
    printk("<6>md: ");
# 1037 "md.c"
    if (rdev->faulty) {
# 1038 "md.c"
      printk("(skipping faulty ");
    }
# 1039 "md.c"
    if (rdev->alias_device) {
# 1040 "md.c"
      printk("(skipping alias ");
    }
# 1042 "md.c"
    tmp___2 = partition_name(rdev->dev);
# 1042 "md.c"
    printk("%s ", tmp___2);
# 1043 "md.c"
    if (! rdev->faulty) {
# 1043 "md.c"
      if (! rdev->alias_device) {
# 1044 "md.c"
        printk("[events: %08lx]", (unsigned long )(rdev->sb)->events_lo);
# 1046 "md.c"
        tmp___3 = write_disk_sb(rdev);
# 1046 "md.c"
        err += tmp___3;
      } else {
# 1048 "md.c"
        printk(")\n");
      }
    } else {
# 1048 "md.c"
      printk(")\n");
    }
  }
# 1050 "md.c"
  if (err) {
# 1051 "md.c"
    count --;
# 1051 "md.c"
    if (count) {
# 1052 "md.c"
      printk("<3>md: errors occurred during superblock update, repeating\n");
      goto repeat;
    }
# 1055 "md.c"
    printk("<3>md: excessive errors occurred during superblock update, exiting\n");
  }
# 1057 "md.c"
  return (0);
}
}
# 1070 "md.c"
static int md_import_device(kdev_t newdev , int on_disk )
{ int err ;
  mdk_rdev_t *rdev ;
  unsigned int size ;
  mdk_rdev_t *tmp ;
  char *tmp___1 ;
  char *tmp___2 ;
  int tmp___3 ;
  char *tmp___4 ;
  int tmp___5 ;
  char *tmp___6 ;
  char *tmp___7 ;
  char *tmp___8 ;

  {
# 1076 "md.c"
  tmp = find_rdev_all(newdev);
# 1076 "md.c"
  if (tmp) {
# 1077 "md.c"
    return (-17);
  }
# 1079 "md.c"
  rdev = (mdk_rdev_t *)kmalloc(sizeof((*rdev)), 496);
# 1080 "md.c"
  if (! rdev) {
# 1081 "md.c"
    tmp___1 = partition_name(newdev);
# 1081 "md.c"
    printk("<3>md: could not alloc mem for %s!\n", tmp___1);
# 1082 "md.c"
    return (-12);
  }
# 1084 "md.c"
  __constant_c_and_count_memset((void *)rdev, 0UL, sizeof((*rdev)));
# 1086 "md.c"
  tmp___3 = is_mounted(newdev);
# 1086 "md.c"
  if (tmp___3) {
# 1087 "md.c"
    tmp___2 = partition_name(newdev);
# 1087 "md.c"
    printk("<4>md: can not import %s, has active inodes!\n", tmp___2);
# 1089 "md.c"
    err = -16;
    goto abort_free;
  }
# 1093 "md.c"
  err = alloc_disk_sb(rdev);
# 1093 "md.c"
  if (err) {
    goto abort_free;
  }
# 1096 "md.c"
  rdev->dev = newdev;
# 1097 "md.c"
  tmp___5 = lock_rdev(rdev);
# 1097 "md.c"
  if (tmp___5) {
# 1098 "md.c"
    tmp___4 = partition_name(newdev);
# 1098 "md.c"
    printk("<3>md: could not lock %s, zero-size? Marking faulty.\n", tmp___4);
# 1100 "md.c"
    err = -22;
    goto abort_free;
  }
# 1103 "md.c"
  rdev->desc_nr = -1;
# 1104 "md.c"
  rdev->faulty = 0;
# 1106 "md.c"
  size = 0U;
# 1107 "md.c"
  if (blk_size[(unsigned int )((int )newdev >> 8)]) {
# 1108 "md.c"
    size = (unsigned int )(*(blk_size[(unsigned int )((int )newdev >> 8)] + ((unsigned int )newdev & 255U)));
  }
# 1109 "md.c"
  if (! size) {
# 1110 "md.c"
    tmp___6 = partition_name(newdev);
# 1110 "md.c"
    printk("<4>md: %s has zero size, marking faulty!\n", tmp___6);
# 1112 "md.c"
    err = -22;
    goto abort_free;
  }
# 1116 "md.c"
  if (on_disk) {
# 1117 "md.c"
    err = read_disk_sb(rdev);
# 1117 "md.c"
    if (err) {
# 1118 "md.c"
      tmp___7 = partition_name(newdev);
# 1118 "md.c"
      printk("<4>md: could not read %s\'s sb, not importing!\n", tmp___7);
      goto abort_free;
    }
# 1122 "md.c"
    err = check_disk_sb(rdev);
# 1122 "md.c"
    if (err) {
# 1123 "md.c"
      tmp___8 = partition_name(newdev);
# 1123 "md.c"
      printk("<4>md: %s has invalid sb, not importing!\n", tmp___8);
      goto abort_free;
    }
# 1128 "md.c"
    if ((rdev->sb)->level != 4294967292U) {
# 1129 "md.c"
      rdev->old_dev = (unsigned short )(((rdev->sb)->this_disk.major << 8) | (rdev->sb)->this_disk.minor);
# 1131 "md.c"
      rdev->desc_nr = (int )(rdev->sb)->this_disk.number;
    } else {
# 1133 "md.c"
      rdev->old_dev = (unsigned short)0;
# 1134 "md.c"
      rdev->desc_nr = -1;
    }
  }
# 1137 "md.c"
  list_add(& rdev->all, & all_raid_disks);
# 1138 "md.c"
  while (1) {
# 1138 "md.c"
    rdev->pending.next = & rdev->pending;
# 1138 "md.c"
    rdev->pending.prev = & rdev->pending;
# 1138 "md.c"
    break;
  }
# 1140 "md.c"
  if (rdev->faulty) {
# 1140 "md.c"
    if (rdev->sb) {
# 1141 "md.c"
      free_disk_sb(rdev);
    }
  }
# 1142 "md.c"
  return (0);
  abort_free:
# 1145 "md.c"
  if (rdev->sb) {
# 1146 "md.c"
    if (rdev->bdev) {
# 1147 "md.c"
      unlock_rdev(rdev);
    }
# 1148 "md.c"
    free_disk_sb(rdev);
  }
# 1150 "md.c"
  kfree((void const *)rdev);
# 1151 "md.c"
  return (err);
}
}
# 1173 "md.c"
static int analyze_sbs(mddev_t *mddev )
{ int out_of_date ;
  int i ;
  int first ;
  struct list_head *tmp ;
  struct list_head *tmp2 ;
  mdk_rdev_t *rdev ;
  mdk_rdev_t *rdev2 ;
  mdk_rdev_t *freshest ;
  mdp_super_t *sb ;
  int tmp___0 ;
  char *tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  __u64 ev1 ;
  __u64 ev2 ;
  __u32 tmp___4 ;
  unsigned int tmp___5 ;
  char *tmp___6 ;
  char *tmp___7 ;
  __u64 ev1___0 ;
  __u64 ev2___0 ;
  char *tmp___8 ;
  __u64 ev1___1 ;
  __u64 ev2___1 ;
  __u64 ev3 ;
  mdp_disk_t *desc ;
  char *tmp___9 ;
  char *tmp___10 ;
  int found ;
  mdp_disk_t *desc___0 ;
  kdev_t dev ;
  char *tmp___11 ;
  int tmp___12 ;
  char *tmp___13 ;
  int tmp___14 ;
  int tmp___15 ;
  int tmp___16 ;
  char *tmp___17 ;
  int tmp___18 ;
  mdp_disk_t *desc___1 ;
  kdev_t dev___0 ;
  int tmp___19 ;
  int tmp___20 ;
  int tmp___21 ;

  {
# 1175 "md.c"
  out_of_date = 0;
# 1183 "md.c"
  tmp = mddev->disks.next;
# 1183 "md.c"
  while (1) {
# 1183 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1183 "md.c"
    tmp = tmp->next;
# 1183 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1183 "md.c"
      break;
    }
# 1184 "md.c"
    if (rdev->faulty) {
# 1185 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 1185);
# 1185 "md.c"
      md_print_devices();
      goto abort;
    }
# 1188 "md.c"
    if (! rdev->sb) {
# 1189 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 1189);
# 1189 "md.c"
      md_print_devices();
      goto abort;
    }
# 1192 "md.c"
    tmp___0 = check_disk_sb(rdev);
# 1192 "md.c"
    if (tmp___0) {
      goto abort;
    }
  }
# 1200 "md.c"
  sb = (mdp_super_t *)((void *)0);
# 1202 "md.c"
  tmp = mddev->disks.next;
# 1202 "md.c"
  while (1) {
# 1202 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1202 "md.c"
    tmp = tmp->next;
# 1202 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1202 "md.c"
      break;
    }
# 1203 "md.c"
    if (! sb) {
# 1204 "md.c"
      sb = rdev->sb;
      goto __Cont;
    }
# 1207 "md.c"
    tmp___2 = sb_equal(sb, rdev->sb);
# 1207 "md.c"
    if (! tmp___2) {
# 1208 "md.c"
      tmp___1 = partition_name(rdev->dev);
# 1208 "md.c"
      printk("<3>md: fatal superblock inconsistency in %s -- removing from array\n",
             tmp___1);
# 1209 "md.c"
      kick_rdev_from_array(rdev);
      goto __Cont;
    }
    __Cont: ;
  }
# 1219 "md.c"
  if (! mddev->sb) {
# 1220 "md.c"
    tmp___3 = alloc_array_sb(mddev);
# 1220 "md.c"
    if (tmp___3) {
      goto abort;
    }
  }
# 1222 "md.c"
  sb = mddev->sb;
# 1223 "md.c"
  freshest = (mdk_rdev_t *)((void *)0);
# 1225 "md.c"
  tmp = mddev->disks.next;
# 1225 "md.c"
  while (1) {
# 1225 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1225 "md.c"
    tmp = tmp->next;
# 1225 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1225 "md.c"
      break;
    }
# 1232 "md.c"
    tmp___5 = calc_sb_csum(rdev->sb);
# 1232 "md.c"
    if (tmp___5 != (rdev->sb)->sb_csum) {
# 1233 "md.c"
      if ((rdev->sb)->events_lo) {
        goto _L;
      } else {
# 1233 "md.c"
        if ((rdev->sb)->events_hi) {
          _L:
# 1234 "md.c"
          tmp___4 = (rdev->sb)->events_lo;
# 1234 "md.c"
          (rdev->sb)->events_lo --;
# 1234 "md.c"
          if (tmp___4 == 0U) {
# 1235 "md.c"
            (rdev->sb)->events_hi --;
          }
        }
      }
    }
# 1238 "md.c"
    tmp___6 = partition_name(rdev->dev);
# 1238 "md.c"
    printk("<6>md: %s\'s event counter: %08lx\n", tmp___6, (unsigned long )(rdev->sb)->events_lo);
# 1241 "md.c"
    if (! freshest) {
# 1242 "md.c"
      freshest = rdev;
      goto __Cont___0;
    }
# 1248 "md.c"
    ev1 = md_event(rdev->sb);
# 1249 "md.c"
    ev2 = md_event(freshest->sb);
# 1250 "md.c"
    if (ev1 != ev2) {
# 1251 "md.c"
      out_of_date = 1;
# 1252 "md.c"
      if (ev1 > ev2) {
# 1253 "md.c"
        freshest = rdev;
      }
    }
    __Cont___0: ;
  }
# 1256 "md.c"
  if (out_of_date) {
# 1257 "md.c"
    printk("<3>md: superblock update time inconsistency -- using the most recent one\n");
# 1258 "md.c"
    tmp___7 = partition_name(freshest->dev);
# 1258 "md.c"
    printk("<6>md: freshest: %s\n", tmp___7);
  }
# 1260 "md.c"
  __constant_memcpy((void *)sb, (void const *)freshest->sb, sizeof((*sb)));
# 1268 "md.c"
  tmp = mddev->disks.next;
# 1268 "md.c"
  while (1) {
# 1268 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1268 "md.c"
    tmp = tmp->next;
# 1268 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1268 "md.c"
      break;
    }
# 1273 "md.c"
    ev1___0 = md_event(rdev->sb);
# 1274 "md.c"
    ev2___0 = md_event(sb);
# 1275 "md.c"
    ev1___0 ++;
# 1276 "md.c"
    if (ev1___0 < ev2___0) {
# 1277 "md.c"
      tmp___8 = partition_name(rdev->dev);
# 1277 "md.c"
      printk("<4>md: kicking non-fresh %s from array!\n", tmp___8);
# 1279 "md.c"
      kick_rdev_from_array(rdev);
      goto __Cont___1;
    }
    __Cont___1: ;
  }
# 1288 "md.c"
  if ((mddev->sb)->level != 4294967292U) {
# 1289 "md.c"
    tmp = mddev->disks.next;
# 1289 "md.c"
    while (1) {
# 1289 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1289 "md.c"
      tmp = tmp->next;
# 1289 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1289 "md.c"
        break;
      }
# 1291 "md.c"
      if (rdev->faulty) {
# 1292 "md.c"
        printk("md: bug in file %s, line %d\n", "md.c", 1292);
# 1292 "md.c"
        md_print_devices();
        goto abort;
      } else {
# 1291 "md.c"
        if (rdev->alias_device) {
# 1292 "md.c"
          printk("md: bug in file %s, line %d\n", "md.c", 1292);
# 1292 "md.c"
          md_print_devices();
          goto abort;
        }
      }
# 1295 "md.c"
      ev1___1 = md_event(rdev->sb);
# 1296 "md.c"
      ev2___1 = md_event(sb);
# 1297 "md.c"
      ev3 = ev2___1;
# 1298 "md.c"
      ev3 --;
# 1299 "md.c"
      if ((int )rdev->dev != (int )rdev->old_dev) {
# 1299 "md.c"
        if (ev1___1 == ev2___1) {
          goto _L___0;
        } else {
# 1299 "md.c"
          if (ev1___1 == ev3) {
            _L___0:
# 1303 "md.c"
            tmp___9 = partition_name(rdev->dev);
# 1303 "md.c"
            tmp___10 = partition_name(rdev->old_dev);
# 1303 "md.c"
            printk("<4>md: device name has changed from %s to %s since last import!\n",
                   tmp___10, tmp___9);
# 1305 "md.c"
            if (rdev->desc_nr == -1) {
# 1306 "md.c"
              printk("md: bug in file %s, line %d\n", "md.c", 1306);
# 1306 "md.c"
              md_print_devices();
              goto abort;
            }
# 1309 "md.c"
            desc = & sb->disks[rdev->desc_nr];
# 1310 "md.c"
            if ((unsigned int )rdev->old_dev != ((desc->major << 8) | desc->minor)) {
# 1311 "md.c"
              printk("md: bug in file %s, line %d\n", "md.c", 1311);
# 1311 "md.c"
              md_print_devices();
              goto abort;
            }
# 1314 "md.c"
            desc->major = (unsigned int )((int )rdev->dev >> 8);
# 1315 "md.c"
            desc->minor = (unsigned int )rdev->dev & 255U;
# 1316 "md.c"
            desc = & (rdev->sb)->this_disk;
# 1317 "md.c"
            desc->major = (unsigned int )((int )rdev->dev >> 8);
# 1318 "md.c"
            desc->minor = (unsigned int )rdev->dev & 255U;
          }
        }
      }
    }
  }
# 1330 "md.c"
  i = 0;
# 1330 "md.c"
  while (i < 27) {
# 1335 "md.c"
    desc___0 = sb->disks + i;
# 1336 "md.c"
    dev = (unsigned short )((desc___0->major << 8) | desc___0->minor);
# 1346 "md.c"
    tmp___16 = disk_faulty(desc___0);
# 1346 "md.c"
    if (tmp___16) {
# 1346 "md.c"
      if ((mddev->sb)->level != 4294967292U) {
# 1347 "md.c"
        found = 0;
# 1348 "md.c"
        tmp = mddev->disks.next;
# 1348 "md.c"
        while (1) {
# 1348 "md.c"
          rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1348 "md.c"
          tmp = tmp->next;
# 1348 "md.c"
          if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1348 "md.c"
            break;
          }
# 1349 "md.c"
          if ((__u32 )rdev->desc_nr != desc___0->number) {
            goto __Cont___2;
          }
# 1351 "md.c"
          tmp___11 = partition_name(rdev->dev);
# 1351 "md.c"
          tmp___12 = mdidx(mddev);
# 1351 "md.c"
          printk("<4>md%d: kicking faulty %s!\n", tmp___12, tmp___11);
# 1353 "md.c"
          kick_rdev_from_array(rdev);
# 1354 "md.c"
          found = 1;
# 1355 "md.c"
          break;
          __Cont___2: ;
        }
# 1357 "md.c"
        if (! found) {
# 1358 "md.c"
          if ((int )dev == 0) {
            goto __Cont___3;
          }
# 1360 "md.c"
          tmp___13 = partition_name(dev);
# 1360 "md.c"
          tmp___14 = mdidx(mddev);
# 1360 "md.c"
          printk("<4>md%d: removing former faulty %s!\n", tmp___14, tmp___13);
        }
# 1363 "md.c"
        remove_descriptor(desc___0, sb);
        goto __Cont___3;
      } else {
        goto _L___1;
      }
    } else {
      _L___1:
# 1365 "md.c"
      tmp___15 = disk_faulty(desc___0);
# 1365 "md.c"
      if (tmp___15) {
# 1369 "md.c"
        rdev = find_rdev(mddev, dev);
# 1370 "md.c"
        if (rdev) {
# 1371 "md.c"
          mark_disk_spare(desc___0);
        } else {
# 1373 "md.c"
          remove_descriptor(desc___0, sb);
        }
      }
    }
# 1376 "md.c"
    if ((int )dev == 0) {
      goto __Cont___3;
    }
# 1381 "md.c"
    found = 0;
# 1382 "md.c"
    tmp = mddev->disks.next;
# 1382 "md.c"
    while (1) {
# 1382 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1382 "md.c"
      tmp = tmp->next;
# 1382 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1382 "md.c"
        break;
      }
# 1389 "md.c"
      if (sb->level == 4294967292U) {
# 1389 "md.c"
        if ((unsigned int )rdev->dev == ((desc___0->major << 8) | desc___0->minor)) {
# 1391 "md.c"
          found = 1;
# 1392 "md.c"
          break;
        }
      }
# 1394 "md.c"
      if ((__u32 )rdev->desc_nr == desc___0->number) {
# 1395 "md.c"
        found = 1;
# 1396 "md.c"
        break;
      }
    }
# 1399 "md.c"
    if (found) {
      goto __Cont___3;
    }
# 1402 "md.c"
    tmp___17 = partition_name(dev);
# 1402 "md.c"
    tmp___18 = mdidx(mddev);
# 1402 "md.c"
    printk("<4>md%d: former device %s is unavailable, removing from array!\n", tmp___18,
           tmp___17);
# 1404 "md.c"
    remove_descriptor(desc___0, sb);
    __Cont___3:
# 1330 "md.c"
    i ++;
  }
# 1411 "md.c"
  first = 1;
# 1412 "md.c"
  i = 0;
# 1412 "md.c"
  while (i < 27) {
# 1416 "md.c"
    desc___1 = sb->disks + i;
# 1417 "md.c"
    dev___0 = (unsigned short )((desc___1->major << 8) | desc___1->minor);
# 1419 "md.c"
    if ((int )dev___0 == 0) {
      goto __Cont___4;
    }
# 1422 "md.c"
    tmp___19 = disk_faulty(desc___1);
# 1422 "md.c"
    if (tmp___19) {
# 1423 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 1423);
# 1423 "md.c"
      md_print_devices();
      goto abort;
    }
# 1427 "md.c"
    rdev = find_rdev(mddev, dev___0);
# 1428 "md.c"
    if (! rdev) {
# 1429 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 1429);
# 1429 "md.c"
      md_print_devices();
      goto abort;
    }
# 1438 "md.c"
    if ((mddev->sb)->level == 4294967292U) {
# 1439 "md.c"
      if (rdev->desc_nr != -1) {
# 1439 "md.c"
        if (rdev->desc_nr != i) {
# 1440 "md.c"
          printk("md: bug in file %s, line %d\n", "md.c", 1440);
# 1440 "md.c"
          md_print_devices();
          goto abort;
        }
      }
# 1443 "md.c"
      rdev->desc_nr = i;
# 1444 "md.c"
      if (! first) {
# 1445 "md.c"
        rdev->alias_device = 1;
      } else {
# 1447 "md.c"
        first = 0;
      }
    }
    __Cont___4:
# 1412 "md.c"
    i ++;
  }
# 1455 "md.c"
  tmp = mddev->disks.next;
# 1455 "md.c"
  while (1) {
# 1455 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1455 "md.c"
    tmp = tmp->next;
# 1455 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1455 "md.c"
      break;
    }
# 1456 "md.c"
    if (rdev->desc_nr == -1) {
# 1457 "md.c"
      kick_rdev_from_array(rdev);
    }
  }
# 1463 "md.c"
  if ((mddev->sb)->level != 4294967292U) {
# 1464 "md.c"
    tmp = mddev->disks.next;
# 1464 "md.c"
    while (1) {
# 1464 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1464 "md.c"
      tmp = tmp->next;
# 1464 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1464 "md.c"
        break;
      }
# 1465 "md.c"
      if (rdev->desc_nr == -1) {
# 1466 "md.c"
        printk("md: bug in file %s, line %d\n", "md.c", 1466);
# 1466 "md.c"
        md_print_devices();
        goto abort;
      }
# 1472 "md.c"
      tmp2 = mddev->disks.next;
# 1472 "md.c"
      while (1) {
# 1472 "md.c"
        rdev2 = (mdk_rdev_t *)((char *)tmp2 - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1472 "md.c"
        tmp2 = tmp2->next;
# 1472 "md.c"
        if (! ((unsigned int )tmp2->prev != (unsigned int )(& mddev->disks))) {
# 1472 "md.c"
          break;
        }
# 1473 "md.c"
        if ((unsigned int )rdev2 != (unsigned int )rdev) {
# 1473 "md.c"
          if (rdev2->desc_nr == rdev->desc_nr) {
# 1475 "md.c"
            printk("md: bug in file %s, line %d\n", "md.c", 1475);
# 1475 "md.c"
            md_print_devices();
            goto abort;
          }
        }
      }
# 1482 "md.c"
      tmp2 = mddev->disks.next;
# 1482 "md.c"
      while (1) {
# 1482 "md.c"
        rdev2 = (mdk_rdev_t *)((char *)tmp2 - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1482 "md.c"
        tmp2 = tmp2->next;
# 1482 "md.c"
        if (! ((unsigned int )tmp2->prev != (unsigned int )(& mddev->disks))) {
# 1482 "md.c"
          break;
        }
# 1483 "md.c"
        if ((unsigned int )rdev2 != (unsigned int )rdev) {
# 1483 "md.c"
          if ((int )rdev2->dev == (int )rdev->dev) {
# 1485 "md.c"
            printk("md: bug in file %s, line %d\n", "md.c", 1485);
# 1485 "md.c"
            md_print_devices();
            goto abort;
          }
        }
      }
    }
  }
# 1495 "md.c"
  if (sb->major_version != 0U) {
# 1498 "md.c"
    tmp___20 = mdidx(mddev);
# 1498 "md.c"
    printk("<1>md: md%d: unsupported raid array version %d.%d.%d\n", tmp___20, sb->major_version,
           sb->minor_version, sb->patch_version);
    goto abort;
  } else {
# 1495 "md.c"
    if (sb->minor_version > 90U) {
# 1498 "md.c"
      tmp___20 = mdidx(mddev);
# 1498 "md.c"
      printk("<1>md: md%d: unsupported raid array version %d.%d.%d\n", tmp___20, sb->major_version,
             sb->minor_version, sb->patch_version);
      goto abort;
    }
  }
# 1503 "md.c"
  if (sb->state != 1U) {
# 1503 "md.c"
    if (sb->level == 1U) {
# 1505 "md.c"
      tmp___21 = mdidx(mddev);
# 1505 "md.c"
      printk("<3>md: md%d: raid array is not clean -- starting background reconstruction\n",
             tmp___21);
    } else {
# 1503 "md.c"
      if (sb->level == 4U) {
# 1505 "md.c"
        tmp___21 = mdidx(mddev);
# 1505 "md.c"
        printk("<3>md: md%d: raid array is not clean -- starting background reconstruction\n",
               tmp___21);
      } else {
# 1503 "md.c"
        if (sb->level == 5U) {
# 1505 "md.c"
          tmp___21 = mdidx(mddev);
# 1505 "md.c"
          printk("<3>md: md%d: raid array is not clean -- starting background reconstruction\n",
                 tmp___21);
        }
      }
    }
  }
# 1507 "md.c"
  return (0);
  abort:
# 1509 "md.c"
  return (1);
}
}
# 1517 "md.c"
static int device_size_calculation(mddev_t *mddev )
{ int data_disks ;
  int persistent ;
  unsigned int readahead ;
  mdp_super_t *sb ;
  struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  char *tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;
  int tmp___5 ;
  int tmp___6 ;

  {
# 1519 "md.c"
  data_disks = 0;
# 1521 "md.c"
  sb = mddev->sb;
# 1530 "md.c"
  persistent = ! (mddev->sb)->not_persistent;
# 1531 "md.c"
  tmp = mddev->disks.next;
# 1531 "md.c"
  while (1) {
# 1531 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1531 "md.c"
    tmp = tmp->next;
# 1531 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1531 "md.c"
      break;
    }
# 1532 "md.c"
    if (rdev->faulty) {
      goto __Cont;
    }
# 1534 "md.c"
    if (rdev->size) {
# 1535 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 1535);
# 1535 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 1538 "md.c"
    rdev->size = (unsigned long )calc_dev_size(rdev->dev, mddev, persistent);
# 1539 "md.c"
    if (rdev->size < (unsigned long )(sb->chunk_size / 1024U)) {
# 1540 "md.c"
      tmp___0 = partition_name(rdev->dev);
# 1540 "md.c"
      printk("<4>md: Dev %s smaller than chunk_size: %ldk < %dk\n", tmp___0, rdev->size,
             sb->chunk_size / 1024U);
# 1544 "md.c"
      return (-22);
    }
    __Cont: ;
  }
# 1548 "md.c"
  switch ((int )sb->level) {
  case -4:
# 1550 "md.c"
  data_disks = 1;
# 1551 "md.c"
  break;
  case -3:
# 1553 "md.c"
  data_disks = 1;
# 1554 "md.c"
  break;
  case -2:
# 1556 "md.c"
  data_disks = 1;
# 1557 "md.c"
  break;
  case -1:
# 1559 "md.c"
  zoned_raid_size(mddev);
# 1560 "md.c"
  data_disks = 1;
# 1561 "md.c"
  break;
  case 0:
# 1563 "md.c"
  zoned_raid_size(mddev);
# 1564 "md.c"
  data_disks = (int )sb->raid_disks;
# 1565 "md.c"
  break;
  case 1:
# 1567 "md.c"
  data_disks = 1;
# 1568 "md.c"
  break;
  case 4:
  case 5:
# 1571 "md.c"
  data_disks = (int )(sb->raid_disks - 1U);
# 1572 "md.c"
  break;
  default:
# 1574 "md.c"
  tmp___1 = mdidx(mddev);
# 1574 "md.c"
  printk("<3>md: md%d: unsupported raid level %d\n", tmp___1, sb->level);
  goto abort;
  }
# 1577 "md.c"
  tmp___3 = mdidx(mddev);
# 1577 "md.c"
  if (! md_size[tmp___3]) {
# 1578 "md.c"
    tmp___2 = mdidx(mddev);
# 1578 "md.c"
    md_size[tmp___2] = (int )(sb->size * (__u32 )data_disks);
  }
# 1580 "md.c"
  readahead = (unsigned int )vm_max_readahead;
# 1581 "md.c"
  if (sb->level == 0U) {
    goto _L;
  } else {
# 1581 "md.c"
    if (sb->level == 4U) {
      goto _L;
    } else {
# 1581 "md.c"
      if (sb->level == 5U) {
        _L:
# 1582 "md.c"
        readahead = (((mddev->sb)->chunk_size >> 12) * 4U) * (__u32 )data_disks;
# 1583 "md.c"
        if (readahead < (unsigned int )((data_disks * 31) * 2)) {
# 1584 "md.c"
          readahead = (unsigned int )((data_disks * 31) * 2);
        }
      } else {
# 1587 "md.c"
        if (sb->level == 4294967293U) {
# 1588 "md.c"
          readahead = 0U;
        }
      }
    }
  }
# 1590 "md.c"
  tmp___4 = mdidx(mddev);
# 1590 "md.c"
  md_maxreadahead[tmp___4] = (int )readahead;
# 1592 "md.c"
  tmp___5 = mdidx(mddev);
# 1592 "md.c"
  printk("<6>md%d: max total readahead window set to %ldk\n", tmp___5, (unsigned long )readahead * 4UL);
# 1595 "md.c"
  tmp___6 = mdidx(mddev);
# 1595 "md.c"
  printk("<6>md%d: %d data-disks, max readahead per data-disk: %ldk\n", tmp___6, data_disks,
         (unsigned long )(readahead / (unsigned int )data_disks) * 4UL);
# 1598 "md.c"
  return (0);
  abort:
# 1600 "md.c"
  return (1);
}
}
# 1613 "md.c"
static int do_md_run(mddev_t *mddev )
{ int pnum ;
  int err ;
  int chunk_size ;
  struct list_head *tmp ;
  mdk_rdev_t *rdev ;
  int tmp___0 ;
  int tmp___1 ;
  unsigned long tmp___2 ;
  char module_name[80] ;
  int tmp___3 ;
  int tmp___4 ;
  int tmp___5 ;
  int tmp___6 ;
  int tmp___7 ;
  int tmp___8 ;
  int tmp___9 ;
  int tmp___10 ;
  int tmp___11 ;
  int tmp___12 ;
  int tmp___13 ;
  int tmp___14 ;
  int tmp___15 ;

  {
# 1621 "md.c"
  if (! mddev->nb_dev) {
# 1622 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 1622);
# 1622 "md.c"
    md_print_devices();
# 1623 "md.c"
    return (-22);
  }
# 1626 "md.c"
  if (mddev->pers) {
# 1627 "md.c"
    return (-16);
  }
# 1633 "md.c"
  tmp___0 = mdidx(mddev);
# 1633 "md.c"
  md_size[tmp___0] = 0;
# 1638 "md.c"
  tmp___1 = analyze_sbs(mddev);
# 1638 "md.c"
  if (tmp___1) {
# 1639 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 1639);
# 1639 "md.c"
    md_print_devices();
# 1640 "md.c"
    return (-22);
  }
# 1643 "md.c"
  chunk_size = (int )(mddev->sb)->chunk_size;
# 1644 "md.c"
  pnum = level_to_pers((int )(mddev->sb)->level);
# 1646 "md.c"
  mddev->param.chunk_size = chunk_size;
# 1647 "md.c"
  mddev->param.personality = pnum;
# 1649 "md.c"
  if ((unsigned long )pnum != 7UL) {
# 1649 "md.c"
    if ((unsigned long )pnum != 3UL) {
# 1650 "md.c"
      if (! chunk_size) {
# 1657 "md.c"
        printk("<3>no chunksize specified, see \'man raidtab\'\n");
# 1658 "md.c"
        return (-22);
      }
# 1660 "md.c"
      if (chunk_size > 4194304) {
# 1661 "md.c"
        printk("<3>too big chunk_size: %d > %d\n", chunk_size, 4194304);
# 1662 "md.c"
        return (-22);
      }
# 1667 "md.c"
      tmp___2 = ffz((unsigned long )(~ chunk_size));
# 1667 "md.c"
      if (1 << tmp___2 != chunk_size) {
# 1668 "md.c"
        printk("md: bug in file %s, line %d\n", "md.c", 1668);
# 1668 "md.c"
        md_print_devices();
# 1669 "md.c"
        return (-22);
      }
# 1671 "md.c"
      if ((unsigned long )chunk_size < 4096UL) {
# 1672 "md.c"
        printk("<3>too small chunk_size: %d < %ld\n", chunk_size, 4096UL);
# 1673 "md.c"
        return (-22);
      }
    } else {
      goto _L;
    }
  } else {
    _L:
# 1676 "md.c"
    if (chunk_size) {
# 1677 "md.c"
      printk("<6>md: RAID level %d does not need chunksize! Continuing anyway.\n",
             (mddev->sb)->level);
    }
  }
# 1680 "md.c"
  if ((unsigned long )pnum >= 8UL) {
# 1681 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 1681);
# 1681 "md.c"
    md_print_devices();
# 1682 "md.c"
    return (-22);
  }
# 1685 "md.c"
  if (! pers[pnum]) {
# 1689 "md.c"
    sprintf(module_name, "md-personality-%d", pnum);
# 1690 "md.c"
    request_module((char const *)(module_name));
# 1691 "md.c"
    if (! pers[pnum]) {
# 1694 "md.c"
      printk("<3>md: personality %d is not loaded!\n", pnum);
# 1696 "md.c"
      return (-22);
    }
  }
# 1700 "md.c"
  tmp___3 = device_size_calculation(mddev);
# 1700 "md.c"
  if (tmp___3) {
# 1701 "md.c"
    return (-22);
  }
# 1709 "md.c"
  tmp___4 = mdidx(mddev);
# 1709 "md.c"
  md_hardsect_sizes[tmp___4] = 512;
# 1710 "md.c"
  tmp = mddev->disks.next;
# 1710 "md.c"
  while (1) {
# 1710 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1710 "md.c"
    tmp = tmp->next;
# 1710 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1710 "md.c"
      break;
    }
# 1711 "md.c"
    if (rdev->faulty) {
      goto __Cont;
    }
# 1713 "md.c"
    invalidate_device(rdev->dev, 1);
# 1714 "md.c"
    tmp___6 = get_hardsect_size(rdev->dev);
# 1714 "md.c"
    tmp___7 = mdidx(mddev);
# 1714 "md.c"
    if (tmp___6 > md_hardsect_sizes[tmp___7]) {
# 1716 "md.c"
      tmp___5 = mdidx(mddev);
# 1716 "md.c"
      md_hardsect_sizes[tmp___5] = get_hardsect_size(rdev->dev);
    }
    __Cont: ;
  }
# 1719 "md.c"
  tmp___8 = mdidx(mddev);
# 1719 "md.c"
  md_blocksizes[tmp___8] = 1024;
# 1720 "md.c"
  tmp___11 = mdidx(mddev);
# 1720 "md.c"
  tmp___12 = mdidx(mddev);
# 1720 "md.c"
  if (md_blocksizes[tmp___11] < md_hardsect_sizes[tmp___12]) {
# 1721 "md.c"
    tmp___9 = mdidx(mddev);
# 1721 "md.c"
    tmp___10 = mdidx(mddev);
# 1721 "md.c"
    md_blocksizes[tmp___9] = md_hardsect_sizes[tmp___10];
  }
# 1722 "md.c"
  mddev->pers = pers[pnum];
# 1724 "md.c"
  err = ((*((mddev->pers)->run)))(mddev);
# 1725 "md.c"
  if (err) {
# 1726 "md.c"
    printk("<3>md: pers->run() failed ...\n");
# 1727 "md.c"
    mddev->pers = (mdk_personality_t *)((void *)0);
# 1728 "md.c"
    return (-22);
  }
# 1731 "md.c"
  (mddev->sb)->state &= 4294967294U;
# 1732 "md.c"
  mddev->sb_dirty = 1;
# 1733 "md.c"
  md_update_sb(mddev);
# 1739 "md.c"
  tmp___13 = mdidx(mddev);
# 1739 "md.c"
  md_hd_struct[tmp___13].start_sect = 0UL;
# 1740 "md.c"
  tmp___14 = mdidx(mddev);
# 1740 "md.c"
  tmp___15 = mdidx(mddev);
# 1740 "md.c"
  register_disk(& md_gendisk, (unsigned short )(2304 | tmp___15), 1U, & md_fops, (long )(md_size[tmp___14] << 1));
# 1743 "md.c"
  read_ahead[9] = 1024;
# 1744 "md.c"
  return (0);
}
}
# 1752 "md.c"
static int restart_array(mddev_t *mddev )
{ int err ;
  kdev_t tmp ;
  int tmp___0 ;
  int tmp___1 ;

  {
# 1754 "md.c"
  err = 0;
# 1759 "md.c"
  if (! mddev->nb_dev) {
# 1760 "md.c"
    while (1) {
# 1760 "md.c"
      err = -6;
      goto out;
# 1760 "md.c"
      break;
    }
  }
# 1762 "md.c"
  if (mddev->pers) {
# 1763 "md.c"
    if (! mddev->ro) {
# 1764 "md.c"
      while (1) {
# 1764 "md.c"
        err = -16;
        goto out;
# 1764 "md.c"
        break;
      }
    }
# 1766 "md.c"
    mddev->ro = 0;
# 1767 "md.c"
    tmp = mddev_to_kdev(mddev);
# 1767 "md.c"
    set_device_ro(tmp, 0);
# 1769 "md.c"
    tmp___0 = mdidx(mddev);
# 1769 "md.c"
    printk("<6>md: md%d switched to read-write mode.\n", tmp___0);
# 1774 "md.c"
    md_recover_arrays();
# 1775 "md.c"
    if ((mddev->pers)->restart_resync) {
# 1776 "md.c"
      ((*((mddev->pers)->restart_resync)))(mddev);
    }
  } else {
# 1778 "md.c"
    tmp___1 = mdidx(mddev);
# 1778 "md.c"
    printk("<3>md: md%d has no personality assigned.\n", tmp___1);
# 1780 "md.c"
    err = -22;
  }
  out:
# 1784 "md.c"
  return (err);
}
}
# 1792 "md.c"
static int do_md_stop(mddev_t *mddev , int ro )
{ int err ;
  int resync_interrupted ;
  kdev_t dev ;
  kdev_t tmp ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;

  {
# 1794 "md.c"
  err = 0;
# 1794 "md.c"
  resync_interrupted = 0;
# 1795 "md.c"
  tmp = mddev_to_kdev(mddev);
# 1795 "md.c"
  dev = tmp;
# 1797 "md.c"
  if (mddev->active.counter > 1) {
# 1798 "md.c"
    tmp___0 = mdidx(mddev);
# 1798 "md.c"
    printk("md: md%d still in use.\n", tmp___0);
# 1799 "md.c"
    while (1) {
# 1799 "md.c"
      err = -16;
      goto out;
# 1799 "md.c"
      break;
    }
  }
# 1802 "md.c"
  if (mddev->pers) {
# 1808 "md.c"
    if ((mddev->pers)->stop_resync) {
# 1809 "md.c"
      tmp___1 = ((*((mddev->pers)->stop_resync)))(mddev);
# 1809 "md.c"
      if (tmp___1) {
# 1810 "md.c"
        resync_interrupted = 1;
      }
    }
# 1812 "md.c"
    if (mddev->recovery_running) {
# 1813 "md.c"
      md_interrupt_thread(md_recovery_thread);
    }
# 1821 "md.c"
    down(& mddev->recovery_sem);
# 1822 "md.c"
    up(& mddev->recovery_sem);
# 1824 "md.c"
    invalidate_device(dev, 1);
# 1826 "md.c"
    if (ro) {
# 1827 "md.c"
      if (mddev->ro) {
# 1828 "md.c"
        while (1) {
# 1828 "md.c"
          err = -6;
          goto out;
# 1828 "md.c"
          break;
        }
      }
# 1829 "md.c"
      mddev->ro = 1;
    } else {
# 1831 "md.c"
      if (mddev->ro) {
# 1832 "md.c"
        set_device_ro(dev, 0);
      }
# 1833 "md.c"
      tmp___2 = ((*((mddev->pers)->stop)))(mddev);
# 1833 "md.c"
      if (tmp___2) {
# 1834 "md.c"
        if (mddev->ro) {
# 1835 "md.c"
          set_device_ro(dev, 1);
        }
# 1836 "md.c"
        while (1) {
# 1836 "md.c"
          err = -16;
          goto out;
# 1836 "md.c"
          break;
        }
      }
# 1838 "md.c"
      if (mddev->ro) {
# 1839 "md.c"
        mddev->ro = 0;
      }
    }
# 1841 "md.c"
    if (mddev->sb) {
# 1846 "md.c"
      if (! mddev->recovery_running) {
# 1846 "md.c"
        if (! resync_interrupted) {
# 1847 "md.c"
          printk("<6>md: marking sb clean...\n");
# 1848 "md.c"
          (mddev->sb)->state |= 1U;
        }
      }
# 1850 "md.c"
      mddev->sb_dirty = 1;
# 1851 "md.c"
      md_update_sb(mddev);
    }
# 1853 "md.c"
    if (ro) {
# 1854 "md.c"
      set_device_ro(dev, 1);
    }
  }
# 1860 "md.c"
  if (! ro) {
# 1861 "md.c"
    tmp___3 = mdidx(mddev);
# 1861 "md.c"
    printk("<6>md: md%d stopped.\n", tmp___3);
# 1862 "md.c"
    free_mddev(mddev);
  } else {
# 1865 "md.c"
    tmp___4 = mdidx(mddev);
# 1865 "md.c"
    printk("<6>md: md%d switched to read-only mode.\n", tmp___4);
  }
  out:
# 1867 "md.c"
  return (err);
}
}
# 1875 "md.c"
int detect_old_array(mdp_super_t *sb )
{

  {
# 1877 "md.c"
  if (sb->major_version > 0U) {
# 1878 "md.c"
    return (0);
  }
# 1879 "md.c"
  if (sb->minor_version >= 90U) {
# 1880 "md.c"
    return (0);
  }
# 1882 "md.c"
  return (-22);
}
}
# 1886 "md.c"
static void autorun_array(mddev_t *mddev )
{ mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  int err ;
  char *tmp___0 ;

  {
# 1892 "md.c"
  if ((unsigned int )mddev->disks.prev == (unsigned int )(& mddev->disks)) {
# 1893 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 1893);
# 1893 "md.c"
    md_print_devices();
# 1894 "md.c"
    return;
  }
# 1897 "md.c"
  printk("<6>md: running: ");
# 1899 "md.c"
  tmp = mddev->disks.next;
# 1899 "md.c"
  while (1) {
# 1899 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 1899 "md.c"
    tmp = tmp->next;
# 1899 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 1899 "md.c"
      break;
    }
# 1900 "md.c"
    tmp___0 = partition_name(rdev->dev);
# 1900 "md.c"
    printk("<%s>", tmp___0);
  }
# 1902 "md.c"
  printk("\n");
# 1904 "md.c"
  err = do_md_run(mddev);
# 1905 "md.c"
  if (err) {
# 1906 "md.c"
    printk("<4>md :do_md_run() returned %d\n", err);
# 1910 "md.c"
    mddev->sb_dirty = 0;
# 1911 "md.c"
    do_md_stop(mddev, 0);
  }
# 1913 "md.c"
  return;
}
}
# 1927 "md.c"
static void autorun_devices(kdev_t countdev )
{ struct list_head candidates ;
  struct list_head *tmp ;
  mdk_rdev_t *rdev0 ;
  mdk_rdev_t *rdev ;
  mddev_t *mddev ;
  kdev_t md_kdev ;
  char *tmp___0 ;
  char *tmp___1 ;
  char *tmp___2 ;
  int tmp___3 ;
  char *tmp___4 ;
  int tmp___5 ;
  char *tmp___6 ;
  int tmp___7 ;
  int tmp___8 ;

  {
# 1936 "md.c"
  printk("<6>md: autorun ...\n");
# 1937 "md.c"
  while ((unsigned int )pending_raid_disks.next != (unsigned int )(& pending_raid_disks)) {
# 1938 "md.c"
    rdev0 = (mdk_rdev_t *)((char *)pending_raid_disks.next - (unsigned long )(& ((mdk_rdev_t *)0)->pending));
# 1941 "md.c"
    tmp___0 = partition_name(rdev0->dev);
# 1941 "md.c"
    printk("<6>md: considering %s ...\n", tmp___0);
# 1942 "md.c"
    while (1) {
# 1942 "md.c"
      candidates.next = & candidates;
# 1942 "md.c"
      candidates.prev = & candidates;
# 1942 "md.c"
      break;
    }
# 1943 "md.c"
    tmp = pending_raid_disks.next;
# 1943 "md.c"
    while (1) {
# 1943 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->pending));
# 1943 "md.c"
      tmp = tmp->next;
# 1943 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& pending_raid_disks))) {
# 1943 "md.c"
        break;
      }
# 1944 "md.c"
      tmp___5 = uuid_equal(rdev0, rdev);
# 1944 "md.c"
      if (tmp___5) {
# 1945 "md.c"
        tmp___3 = sb_equal(rdev0->sb, rdev->sb);
# 1945 "md.c"
        if (! tmp___3) {
# 1946 "md.c"
          tmp___1 = partition_name(rdev0->dev);
# 1946 "md.c"
          tmp___2 = partition_name(rdev->dev);
# 1946 "md.c"
          printk("<4>md: %s has same UUID as %s, but superblocks differ ...\n", tmp___2,
                 tmp___1);
          goto __Cont;
        }
# 1951 "md.c"
        tmp___4 = partition_name(rdev->dev);
# 1951 "md.c"
        printk("<6>md:  adding %s ...\n", tmp___4);
# 1952 "md.c"
        list_del(& rdev->pending);
# 1953 "md.c"
        list_add(& rdev->pending, & candidates);
      }
      __Cont: ;
    }
# 1961 "md.c"
    md_kdev = (unsigned short )(2304U | (rdev0->sb)->md_minor);
# 1962 "md.c"
    mddev = kdev_to_mddev(md_kdev);
# 1963 "md.c"
    if (mddev) {
# 1964 "md.c"
      tmp___6 = partition_name(rdev0->dev);
# 1964 "md.c"
      tmp___7 = mdidx(mddev);
# 1964 "md.c"
      printk("<4>md: md%d already running, cannot run %s\n", tmp___7, tmp___6);
# 1966 "md.c"
      tmp = candidates.next;
# 1966 "md.c"
      while (1) {
# 1966 "md.c"
        rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->pending));
# 1966 "md.c"
        tmp = tmp->next;
# 1966 "md.c"
        if (! ((unsigned int )tmp->prev != (unsigned int )(& candidates))) {
# 1966 "md.c"
          break;
        }
# 1967 "md.c"
        export_rdev(rdev);
      }
# 1968 "md.c"
      continue;
    }
# 1970 "md.c"
    mddev = alloc_mddev(md_kdev);
# 1971 "md.c"
    if (! mddev) {
# 1972 "md.c"
      printk("<3>md: cannot allocate memory for md drive.\n");
# 1973 "md.c"
      break;
    }
# 1975 "md.c"
    if ((int )md_kdev == (int )countdev) {
# 1976 "md.c"
      atomic_inc(& mddev->active);
    }
# 1977 "md.c"
    tmp___8 = mdidx(mddev);
# 1977 "md.c"
    printk("<6>md: created md%d\n", tmp___8);
# 1978 "md.c"
    tmp = candidates.next;
# 1978 "md.c"
    while (1) {
# 1978 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->pending));
# 1978 "md.c"
      tmp = tmp->next;
# 1978 "md.c"
      if (! ((unsigned int )tmp->prev != (unsigned int )(& candidates))) {
# 1978 "md.c"
        break;
      }
# 1979 "md.c"
      bind_rdev_to_array(rdev, mddev);
# 1980 "md.c"
      list_del(& rdev->pending);
# 1981 "md.c"
      while (1) {
# 1981 "md.c"
        rdev->pending.next = & rdev->pending;
# 1981 "md.c"
        rdev->pending.prev = & rdev->pending;
# 1981 "md.c"
        break;
      }
    }
# 1983 "md.c"
    autorun_array(mddev);
  }
# 1985 "md.c"
  printk("<6>md: ... autorun DONE.\n");
# 1986 "md.c"
  return;
}
}
# 2020 "md.c"
static int autostart_array(kdev_t startdev , kdev_t countdev )
{ int err ;
  int i ;
  mdp_super_t *sb ;
  mdk_rdev_t *start_rdev ;
  mdk_rdev_t *rdev ;
  char *tmp ;
  int tmp___0 ;
  char *tmp___1 ;
  mdp_disk_t *desc ;
  kdev_t dev ;
  char *tmp___2 ;
  int tmp___3 ;

  {
# 2022 "md.c"
  err = -22;
# 2023 "md.c"
  sb = (mdp_super_t *)((void *)0);
# 2024 "md.c"
  start_rdev = (mdk_rdev_t *)((void *)0);
# 2026 "md.c"
  tmp___0 = md_import_device(startdev, 1);
# 2026 "md.c"
  if (tmp___0) {
# 2027 "md.c"
    tmp = partition_name(startdev);
# 2027 "md.c"
    printk("<4>md: could not import %s!\n", tmp);
    goto abort;
  }
# 2031 "md.c"
  start_rdev = find_rdev_all(startdev);
# 2032 "md.c"
  if (! start_rdev) {
# 2033 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2033);
# 2033 "md.c"
    md_print_devices();
    goto abort;
  }
# 2036 "md.c"
  if (start_rdev->faulty) {
# 2037 "md.c"
    tmp___1 = partition_name(startdev);
# 2037 "md.c"
    printk("<4>md: can not autostart based on faulty %s!\n", tmp___1);
    goto abort;
  }
# 2041 "md.c"
  list_add(& start_rdev->pending, & pending_raid_disks);
# 2043 "md.c"
  sb = start_rdev->sb;
# 2045 "md.c"
  err = detect_old_array(sb);
# 2046 "md.c"
  if (err) {
# 2047 "md.c"
    printk("<4>md: array version is too old to be autostarted ,use raidtools 0.90 mkraid --upgrade to upgrade the array without data loss!\n");
    goto abort;
  }
# 2053 "md.c"
  i = 0;
# 2053 "md.c"
  while (i < 27) {
# 2057 "md.c"
    desc = sb->disks + i;
# 2058 "md.c"
    dev = (unsigned short )((desc->major << 8) | desc->minor);
# 2060 "md.c"
    if ((int )dev == 0) {
      goto __Cont;
    }
# 2062 "md.c"
    if ((int )dev == (int )startdev) {
      goto __Cont;
    }
# 2064 "md.c"
    tmp___3 = md_import_device(dev, 1);
# 2064 "md.c"
    if (tmp___3) {
# 2065 "md.c"
      tmp___2 = partition_name(dev);
# 2065 "md.c"
      printk("<4>md: could not import %s, trying to run array nevertheless.\n", tmp___2);
      goto __Cont;
    }
# 2069 "md.c"
    rdev = find_rdev_all(dev);
# 2070 "md.c"
    if (! rdev) {
# 2071 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 2071);
# 2071 "md.c"
      md_print_devices();
      goto abort;
    }
# 2074 "md.c"
    list_add(& rdev->pending, & pending_raid_disks);
    __Cont:
# 2053 "md.c"
    i ++;
  }
# 2080 "md.c"
  autorun_devices(countdev);
# 2081 "md.c"
  return (0);
  abort:
# 2084 "md.c"
  if (start_rdev) {
# 2085 "md.c"
    export_rdev(start_rdev);
  }
# 2086 "md.c"
  return (err);
}
}
# 2099 "md.c"
static int get_version(void *arg )
{ mdu_version_t ver ;
  unsigned long tmp ;

  {
# 2103 "md.c"
  ver.major = 0;
# 2104 "md.c"
  ver.minor = 90;
# 2105 "md.c"
  ver.patchlevel = 0;
# 2107 "md.c"
  tmp = __constant_copy_to_user(arg, (void const *)(& ver), (unsigned long )sizeof(ver));
# 2107 "md.c"
  if (tmp) {
# 2108 "md.c"
    return (-14);
  }
# 2110 "md.c"
  return (0);
}
}
# 2114 "md.c"
static int get_array_info(mddev_t *mddev , void *arg )
{ mdu_array_info_t info ;
  unsigned long tmp ;

  {
# 2118 "md.c"
  if (! mddev->sb) {
# 2119 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2119);
# 2119 "md.c"
    md_print_devices();
# 2120 "md.c"
    return (-22);
  }
# 2123 "md.c"
  info.major_version = (int )(mddev->sb)->major_version;
# 2124 "md.c"
  info.minor_version = (int )(mddev->sb)->minor_version;
# 2125 "md.c"
  info.patch_version = (int )(mddev->sb)->patch_version;
# 2126 "md.c"
  info.ctime = (int )(mddev->sb)->ctime;
# 2127 "md.c"
  info.level = (int )(mddev->sb)->level;
# 2128 "md.c"
  info.size = (int )(mddev->sb)->size;
# 2129 "md.c"
  info.nr_disks = (int )(mddev->sb)->nr_disks;
# 2130 "md.c"
  info.raid_disks = (int )(mddev->sb)->raid_disks;
# 2131 "md.c"
  info.md_minor = (int )(mddev->sb)->md_minor;
# 2132 "md.c"
  info.not_persistent = (int )(mddev->sb)->not_persistent;
# 2134 "md.c"
  info.utime = (int )(mddev->sb)->utime;
# 2135 "md.c"
  info.state = (int )(mddev->sb)->state;
# 2136 "md.c"
  info.active_disks = (int )(mddev->sb)->active_disks;
# 2137 "md.c"
  info.working_disks = (int )(mddev->sb)->working_disks;
# 2138 "md.c"
  info.failed_disks = (int )(mddev->sb)->failed_disks;
# 2139 "md.c"
  info.spare_disks = (int )(mddev->sb)->spare_disks;
# 2141 "md.c"
  info.layout = (int )(mddev->sb)->layout;
# 2142 "md.c"
  info.chunk_size = (int )(mddev->sb)->chunk_size;
# 2144 "md.c"
  tmp = __constant_copy_to_user(arg, (void const *)(& info), (unsigned long )sizeof(info));
# 2144 "md.c"
  if (tmp) {
# 2145 "md.c"
    return (-14);
  }
# 2147 "md.c"
  return (0);
}
}
# 2152 "md.c"
static int get_disk_info(mddev_t *mddev , void *arg )
{ mdu_disk_info_t info ;
  unsigned int nr ;
  unsigned long tmp ;
  unsigned long tmp___1 ;

  {
# 2157 "md.c"
  if (! mddev->sb) {
# 2158 "md.c"
    return (-22);
  }
# 2160 "md.c"
  tmp = __constant_copy_from_user((void *)(& info), (void const *)arg, (unsigned long )sizeof(info));
# 2160 "md.c"
  if (tmp) {
# 2161 "md.c"
    return (-14);
  }
# 2163 "md.c"
  nr = (unsigned int )info.number;
# 2164 "md.c"
  if (nr >= 27U) {
# 2165 "md.c"
    return (-22);
  }
# 2167 "md.c"
  info.major = (int )(mddev->sb)->disks[nr].major;
# 2168 "md.c"
  info.minor = (int )(mddev->sb)->disks[nr].minor;
# 2169 "md.c"
  info.raid_disk = (int )(mddev->sb)->disks[nr].raid_disk;
# 2170 "md.c"
  info.state = (int )(mddev->sb)->disks[nr].state;
# 2172 "md.c"
  tmp___1 = __constant_copy_to_user(arg, (void const *)(& info), (unsigned long )sizeof(info));
# 2172 "md.c"
  if (tmp___1) {
# 2173 "md.c"
    return (-14);
  }
# 2175 "md.c"
  return (0);
}
}
# 2181 "md.c"
static int add_new_disk(mddev_t *mddev , mdu_disk_info_t *info )
{ int err ;
  int size ;
  int persistent ;
  mdk_rdev_t *rdev ;
  unsigned int nr ;
  kdev_t dev ;
  char *tmp ;
  mdk_rdev_t *tmp___0 ;
  mdk_rdev_t *rdev0 ;
  char *tmp___1 ;
  char *tmp___2 ;
  int tmp___3 ;
  char *tmp___4 ;
  char *tmp___5 ;
  int tmp___6 ;

  {
# 2187 "md.c"
  dev = (unsigned short )((info->major << 8) | info->minor);
# 2189 "md.c"
  tmp___0 = find_rdev_all(dev);
# 2189 "md.c"
  if (tmp___0) {
# 2190 "md.c"
    tmp = partition_name(dev);
# 2190 "md.c"
    printk("<4>md: device %s already used in a RAID array!\n", tmp);
# 2192 "md.c"
    return (-16);
  }
# 2194 "md.c"
  if (! mddev->sb) {
# 2196 "md.c"
    err = md_import_device(dev, 1);
# 2197 "md.c"
    if (err) {
# 2198 "md.c"
      printk("<4>md: md_import_device returned %d\n", err);
# 2199 "md.c"
      return (-22);
    }
# 2201 "md.c"
    rdev = find_rdev_all(dev);
# 2202 "md.c"
    if (! rdev) {
# 2203 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 2203);
# 2203 "md.c"
      md_print_devices();
# 2204 "md.c"
      return (-22);
    }
# 2206 "md.c"
    if (mddev->nb_dev) {
# 2207 "md.c"
      rdev0 = (mdk_rdev_t *)((char *)mddev->disks.next - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 2209 "md.c"
      tmp___3 = uuid_equal(rdev0, rdev);
# 2209 "md.c"
      if (! tmp___3) {
# 2210 "md.c"
        tmp___1 = partition_name(rdev0->dev);
# 2210 "md.c"
        tmp___2 = partition_name(rdev->dev);
# 2210 "md.c"
        printk("<4>md: %s has different UUID to %s\n", tmp___2, tmp___1);
# 2212 "md.c"
        export_rdev(rdev);
# 2213 "md.c"
        return (-22);
      }
# 2215 "md.c"
      tmp___6 = sb_equal(rdev0->sb, rdev->sb);
# 2215 "md.c"
      if (! tmp___6) {
# 2216 "md.c"
        tmp___4 = partition_name(rdev0->dev);
# 2216 "md.c"
        tmp___5 = partition_name(rdev->dev);
# 2216 "md.c"
        printk("<4>md: %s has same UUID but different superblock to %s\n", tmp___5,
               tmp___4);
# 2218 "md.c"
        export_rdev(rdev);
# 2219 "md.c"
        return (-22);
      }
    }
# 2222 "md.c"
    bind_rdev_to_array(rdev, mddev);
# 2223 "md.c"
    return (0);
  }
# 2226 "md.c"
  nr = (unsigned int )info->number;
# 2227 "md.c"
  if (nr >= (mddev->sb)->nr_disks) {
# 2228 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2228);
# 2228 "md.c"
    md_print_devices();
# 2229 "md.c"
    return (-22);
  }
# 2233 "md.c"
  (mddev->sb)->disks[nr].number = (unsigned int )info->number;
# 2234 "md.c"
  (mddev->sb)->disks[nr].major = (unsigned int )info->major;
# 2235 "md.c"
  (mddev->sb)->disks[nr].minor = (unsigned int )info->minor;
# 2236 "md.c"
  (mddev->sb)->disks[nr].raid_disk = (unsigned int )info->raid_disk;
# 2237 "md.c"
  (mddev->sb)->disks[nr].state = (unsigned int )info->state;
# 2239 "md.c"
  if ((info->state & 1) == 0) {
# 2240 "md.c"
    err = md_import_device(dev, 0);
# 2241 "md.c"
    if (err) {
# 2242 "md.c"
      printk("<4>md: error, md_import_device() returned %d\n", err);
# 2243 "md.c"
      return (-22);
    }
# 2245 "md.c"
    rdev = find_rdev_all(dev);
# 2246 "md.c"
    if (! rdev) {
# 2247 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 2247);
# 2247 "md.c"
      md_print_devices();
# 2248 "md.c"
      return (-22);
    }
# 2251 "md.c"
    rdev->old_dev = dev;
# 2252 "md.c"
    rdev->desc_nr = info->number;
# 2254 "md.c"
    bind_rdev_to_array(rdev, mddev);
# 2256 "md.c"
    persistent = ! (mddev->sb)->not_persistent;
# 2257 "md.c"
    if (! persistent) {
# 2258 "md.c"
      printk("<6>md: nonpersistent superblock ...\n");
    }
# 2260 "md.c"
    size = (int )calc_dev_size(dev, mddev, persistent);
# 2261 "md.c"
    rdev->sb_offset = (unsigned long )calc_dev_sboffset(dev, mddev, persistent);
# 2263 "md.c"
    if (! (mddev->sb)->size) {
# 2264 "md.c"
      (mddev->sb)->size = (unsigned int )size;
    } else {
# 2263 "md.c"
      if ((mddev->sb)->size > (__u32 )size) {
# 2264 "md.c"
        (mddev->sb)->size = (unsigned int )size;
      }
    }
  }
# 2270 "md.c"
  sync_sbs(mddev);
# 2272 "md.c"
  return (0);
}
}
# 2276 "md.c"
static int hot_generate_error(mddev_t *mddev , kdev_t dev )
{ struct request_queue *q ;
  mdk_rdev_t *rdev ;
  mdp_disk_t *disk ;
  int tmp ;
  char *tmp___0 ;
  int tmp___1 ;

  {
# 2282 "md.c"
  if (! mddev->pers) {
# 2283 "md.c"
    return (-19);
  }
# 2285 "md.c"
  tmp = mdidx(mddev);
# 2285 "md.c"
  tmp___0 = partition_name(dev);
# 2285 "md.c"
  printk("<6>md: trying to generate %s error in md%d ... \n", tmp___0, tmp);
# 2288 "md.c"
  rdev = find_rdev(mddev, dev);
# 2289 "md.c"
  if (! rdev) {
# 2290 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2290);
# 2290 "md.c"
    md_print_devices();
# 2291 "md.c"
    return (-6);
  }
# 2294 "md.c"
  if (rdev->desc_nr == -1) {
# 2295 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2295);
# 2295 "md.c"
    md_print_devices();
# 2296 "md.c"
    return (-22);
  }
# 2298 "md.c"
  disk = & (mddev->sb)->disks[rdev->desc_nr];
# 2299 "md.c"
  tmp___1 = disk_active(disk);
# 2299 "md.c"
  if (! tmp___1) {
# 2300 "md.c"
    return (-19);
  }
# 2302 "md.c"
  q = blk_get_queue(rdev->dev);
# 2303 "md.c"
  if (! q) {
# 2304 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2304);
# 2304 "md.c"
    md_print_devices();
# 2305 "md.c"
    return (-19);
  }
# 2307 "md.c"
  printk("<6>md: okay, generating error!\n");
# 2310 "md.c"
  return (0);
}
}
# 2313 "md.c"
static int hot_remove_disk(mddev_t *mddev , kdev_t dev )
{ int err ;
  mdk_rdev_t *rdev ;
  mdp_disk_t *disk ;
  int tmp ;
  char *tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;
  char *tmp___5 ;

  {
# 2319 "md.c"
  if (! mddev->pers) {
# 2320 "md.c"
    return (-19);
  }
# 2322 "md.c"
  tmp = mdidx(mddev);
# 2322 "md.c"
  tmp___0 = partition_name(dev);
# 2322 "md.c"
  printk("<6>md: trying to remove %s from md%d ... \n", tmp___0, tmp);
# 2325 "md.c"
  if (! (mddev->pers)->diskop) {
# 2326 "md.c"
    tmp___1 = mdidx(mddev);
# 2326 "md.c"
    printk("<4>md%d: personality does not support diskops!\n", tmp___1);
# 2328 "md.c"
    return (-22);
  }
# 2331 "md.c"
  rdev = find_rdev(mddev, dev);
# 2332 "md.c"
  if (! rdev) {
# 2333 "md.c"
    return (-6);
  }
# 2335 "md.c"
  if (rdev->desc_nr == -1) {
# 2336 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2336);
# 2336 "md.c"
    md_print_devices();
# 2337 "md.c"
    return (-22);
  }
# 2339 "md.c"
  disk = & (mddev->sb)->disks[rdev->desc_nr];
# 2340 "md.c"
  tmp___2 = disk_active(disk);
# 2340 "md.c"
  if (tmp___2) {
# 2341 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2341);
# 2341 "md.c"
    md_print_devices();
    goto busy;
  }
# 2344 "md.c"
  tmp___3 = disk_removed(disk);
# 2344 "md.c"
  if (tmp___3) {
# 2345 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2345);
# 2345 "md.c"
    md_print_devices();
# 2346 "md.c"
    return (-22);
  }
# 2349 "md.c"
  err = ((*((mddev->pers)->diskop)))(mddev, & disk, 3);
# 2350 "md.c"
  if (err == -16) {
# 2351 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2351);
# 2351 "md.c"
    md_print_devices();
    goto busy;
  }
# 2354 "md.c"
  if (err) {
# 2355 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2355);
# 2355 "md.c"
    md_print_devices();
# 2356 "md.c"
    return (-22);
  }
# 2359 "md.c"
  remove_descriptor(disk, mddev->sb);
# 2360 "md.c"
  kick_rdev_from_array(rdev);
# 2361 "md.c"
  mddev->sb_dirty = 1;
# 2362 "md.c"
  md_update_sb(mddev);
# 2364 "md.c"
  return (0);
  busy:
# 2366 "md.c"
  tmp___4 = mdidx(mddev);
# 2366 "md.c"
  tmp___5 = partition_name(dev);
# 2366 "md.c"
  printk("<4>md: cannot remove active disk %s from md%d ... \n", tmp___5, tmp___4);
# 2368 "md.c"
  return (-16);
}
}
# 2371 "md.c"
static int hot_add_disk(mddev_t *mddev , kdev_t dev )
{ int i ;
  int err ;
  int persistent ;
  unsigned int size ;
  mdk_rdev_t *rdev ;
  mdp_disk_t *disk ;
  int tmp ;
  char *tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  char *tmp___4 ;
  int tmp___5 ;
  int tmp___6 ;
  int tmp___7 ;
  int tmp___8 ;

  {
# 2378 "md.c"
  if (! mddev->pers) {
# 2379 "md.c"
    return (-19);
  }
# 2381 "md.c"
  tmp = mdidx(mddev);
# 2381 "md.c"
  tmp___0 = partition_name(dev);
# 2381 "md.c"
  printk("<6>md: trying to hot-add %s to md%d ... \n", tmp___0, tmp);
# 2384 "md.c"
  if (! (mddev->pers)->diskop) {
# 2385 "md.c"
    tmp___1 = mdidx(mddev);
# 2385 "md.c"
    printk("<4>md%d: personality does not support diskops!\n", tmp___1);
# 2387 "md.c"
    return (-22);
  }
# 2390 "md.c"
  persistent = ! (mddev->sb)->not_persistent;
# 2391 "md.c"
  size = calc_dev_size(dev, mddev, persistent);
# 2393 "md.c"
  if (size < (mddev->sb)->size) {
# 2394 "md.c"
    tmp___2 = mdidx(mddev);
# 2394 "md.c"
    printk("<4>md%d: disk size %d blocks < array size %d\n", tmp___2, size, (mddev->sb)->size);
# 2396 "md.c"
    return (-28);
  }
# 2399 "md.c"
  rdev = find_rdev(mddev, dev);
# 2400 "md.c"
  if (rdev) {
# 2401 "md.c"
    return (-16);
  }
# 2403 "md.c"
  err = md_import_device(dev, 0);
# 2404 "md.c"
  if (err) {
# 2405 "md.c"
    printk("<4>md: error, md_import_device() returned %d\n", err);
# 2406 "md.c"
    return (-22);
  }
# 2408 "md.c"
  rdev = find_rdev_all(dev);
# 2409 "md.c"
  if (! rdev) {
# 2410 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2410);
# 2410 "md.c"
    md_print_devices();
# 2411 "md.c"
    return (-22);
  }
# 2413 "md.c"
  if (rdev->faulty) {
# 2414 "md.c"
    tmp___3 = mdidx(mddev);
# 2414 "md.c"
    tmp___4 = partition_name(dev);
# 2414 "md.c"
    printk("<4>md: can not hot-add faulty %s disk to md%d!\n", tmp___4, tmp___3);
# 2416 "md.c"
    err = -22;
    goto abort_export;
  }
# 2419 "md.c"
  bind_rdev_to_array(rdev, mddev);
# 2425 "md.c"
  rdev->old_dev = dev;
# 2426 "md.c"
  rdev->size = (unsigned long )size;
# 2427 "md.c"
  rdev->sb_offset = (unsigned long )calc_dev_sboffset(dev, mddev, persistent);
# 2429 "md.c"
  disk = (mddev->sb)->disks + (mddev->sb)->raid_disks;
# 2430 "md.c"
  i = (int )(mddev->sb)->raid_disks;
# 2430 "md.c"
  while (i < 27) {
# 2431 "md.c"
    disk = (mddev->sb)->disks + i;
# 2433 "md.c"
    if (! disk->major) {
# 2433 "md.c"
      if (! disk->minor) {
# 2434 "md.c"
        break;
      }
    }
# 2435 "md.c"
    tmp___5 = disk_removed(disk);
# 2435 "md.c"
    if (tmp___5) {
# 2436 "md.c"
      break;
    }
# 2430 "md.c"
    i ++;
  }
# 2438 "md.c"
  if (i == 27) {
# 2439 "md.c"
    tmp___6 = mdidx(mddev);
# 2439 "md.c"
    printk("<4>md%d: can not hot-add to full array!\n", tmp___6);
# 2441 "md.c"
    err = -16;
    goto abort_unbind_export;
  }
# 2445 "md.c"
  tmp___7 = disk_removed(disk);
# 2445 "md.c"
  if (tmp___7) {
# 2449 "md.c"
    if (disk->number != (__u32 )i) {
# 2450 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 2450);
# 2450 "md.c"
      md_print_devices();
# 2451 "md.c"
      err = -22;
      goto abort_unbind_export;
    }
  } else {
# 2455 "md.c"
    disk->number = (unsigned int )i;
  }
# 2458 "md.c"
  disk->raid_disk = disk->number;
# 2459 "md.c"
  disk->major = (unsigned int )((int )dev >> 8);
# 2460 "md.c"
  disk->minor = (unsigned int )dev & 255U;
# 2462 "md.c"
  tmp___8 = ((*((mddev->pers)->diskop)))(mddev, & disk, 4);
# 2462 "md.c"
  if (tmp___8) {
# 2463 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2463);
# 2463 "md.c"
    md_print_devices();
# 2464 "md.c"
    err = -22;
    goto abort_unbind_export;
  }
# 2468 "md.c"
  mark_disk_spare(disk);
# 2469 "md.c"
  (mddev->sb)->nr_disks ++;
# 2470 "md.c"
  (mddev->sb)->spare_disks ++;
# 2471 "md.c"
  (mddev->sb)->working_disks ++;
# 2473 "md.c"
  mddev->sb_dirty = 1;
# 2474 "md.c"
  md_update_sb(mddev);
# 2480 "md.c"
  md_recover_arrays();
# 2482 "md.c"
  return (0);
  abort_unbind_export:
# 2485 "md.c"
  unbind_rdev_from_array(rdev);
  abort_export:
# 2488 "md.c"
  export_rdev(rdev);
# 2489 "md.c"
  return (err);
}
}
# 2493 "md.c"
static int set_array_info(mddev_t *mddev , mdu_array_info_t *info )
{ int tmp ;

  {
# 2496 "md.c"
  tmp = alloc_array_sb(mddev);
# 2496 "md.c"
  if (tmp) {
# 2497 "md.c"
    return (-12);
  }
# 2499 "md.c"
  (mddev->sb)->major_version = 0U;
# 2500 "md.c"
  (mddev->sb)->minor_version = 90U;
# 2501 "md.c"
  (mddev->sb)->patch_version = 0U;
# 2502 "md.c"
  (mddev->sb)->ctime = (unsigned int )xtime.tv_sec;
# 2504 "md.c"
  (mddev->sb)->level = (unsigned int )info->level;
# 2505 "md.c"
  (mddev->sb)->size = (unsigned int )info->size;
# 2506 "md.c"
  (mddev->sb)->nr_disks = (unsigned int )info->nr_disks;
# 2507 "md.c"
  (mddev->sb)->raid_disks = (unsigned int )info->raid_disks;
# 2508 "md.c"
  (mddev->sb)->md_minor = (unsigned int )info->md_minor;
# 2509 "md.c"
  (mddev->sb)->not_persistent = (unsigned int )info->not_persistent;
# 2511 "md.c"
  (mddev->sb)->state = (unsigned int )info->state;
# 2512 "md.c"
  (mddev->sb)->active_disks = (unsigned int )info->active_disks;
# 2513 "md.c"
  (mddev->sb)->working_disks = (unsigned int )info->working_disks;
# 2514 "md.c"
  (mddev->sb)->failed_disks = (unsigned int )info->failed_disks;
# 2515 "md.c"
  (mddev->sb)->spare_disks = (unsigned int )info->spare_disks;
# 2517 "md.c"
  (mddev->sb)->layout = (unsigned int )info->layout;
# 2518 "md.c"
  (mddev->sb)->chunk_size = (unsigned int )info->chunk_size;
# 2520 "md.c"
  (mddev->sb)->md_magic = 2838187772U;
# 2525 "md.c"
  get_random_bytes((void *)(& (mddev->sb)->set_uuid0), 4);
# 2526 "md.c"
  get_random_bytes((void *)(& (mddev->sb)->set_uuid1), 4);
# 2527 "md.c"
  get_random_bytes((void *)(& (mddev->sb)->set_uuid2), 4);
# 2528 "md.c"
  get_random_bytes((void *)(& (mddev->sb)->set_uuid3), 4);
# 2530 "md.c"
  return (0);
}
}
# 2534 "md.c"
static int set_disk_info(mddev_t *mddev , void *arg )
{

  {
# 2536 "md.c"
  printk("<6>md: not yet");
# 2537 "md.c"
  return (-22);
}
}
# 2540 "md.c"
static int clear_array(mddev_t *mddev )
{

  {
# 2542 "md.c"
  printk("<6>md: not yet");
# 2543 "md.c"
  return (-22);
}
}
# 2546 "md.c"
static int write_raid_info(mddev_t *mddev )
{

  {
# 2548 "md.c"
  printk("<6>md: not yet");
# 2549 "md.c"
  return (-22);
}
}
# 2552 "md.c"
static int protect_array(mddev_t *mddev )
{

  {
# 2554 "md.c"
  printk("<6>md: not yet");
# 2555 "md.c"
  return (-22);
}
}
# 2558 "md.c"
static int unprotect_array(mddev_t *mddev )
{

  {
# 2560 "md.c"
  printk("<6>md: not yet");
# 2561 "md.c"
  return (-22);
}
}
# 2564 "md.c"
static int set_disk_faulty(mddev_t *mddev , kdev_t dev )
{ int ret ;

  {
# 2568 "md.c"
  ret = md_error(mddev, dev);
# 2569 "md.c"
  return (ret);
}
}
# 2572 "md.c"
static int md_ioctl(struct inode *inode , struct file *file , unsigned int cmd , unsigned long arg )
{ unsigned int minor ;
  int err ;
  struct hd_geometry *loc ;
  mddev_t *mddev ;
  kdev_t dev ;
  int tmp ;
  long __pu_err ;
  unsigned long *__pu_addr ;
  unsigned long flag ;
  unsigned long sum ;
  struct task_struct *tmp___0 ;
  long __pu_err___0 ;
  u64 *__pu_addr___0 ;
  unsigned long flag___0 ;
  unsigned long sum___0 ;
  struct task_struct *tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  mdu_array_info_t info ;
  unsigned long tmp___4 ;
  char *tmp___6 ;
  long __pu_err___1 ;
  char *__pu_addr___1 ;
  unsigned long flag___1 ;
  unsigned long sum___1 ;
  struct task_struct *tmp___7 ;
  long __pu_err___2 ;
  char *__pu_addr___2 ;
  unsigned long flag___2 ;
  unsigned long sum___2 ;
  struct task_struct *tmp___8 ;
  long __pu_err___3 ;
  short *__pu_addr___3 ;
  int tmp___9 ;
  int tmp___10 ;
  int tmp___11 ;
  int tmp___12 ;
  unsigned long flag___3 ;
  unsigned long sum___3 ;
  struct task_struct *tmp___13 ;
  long __pu_err___4 ;
  long *__pu_addr___4 ;
  unsigned long flag___4 ;
  unsigned long sum___4 ;
  struct task_struct *tmp___14 ;
  mdu_disk_info_t info___0 ;
  unsigned long tmp___15 ;
  int tmp___17 ;
  struct task_struct *tmp___18 ;
  struct task_struct *tmp___19 ;

  {
# 2576 "md.c"
  err = 0;
# 2577 "md.c"
  loc = (struct hd_geometry *)arg;
# 2578 "md.c"
  mddev = (mddev_t *)((void *)0);
# 2581 "md.c"
  tmp = md_capable_admin();
# 2581 "md.c"
  if (! tmp) {
# 2582 "md.c"
    return (-13);
  }
# 2584 "md.c"
  dev = inode->i_rdev;
# 2585 "md.c"
  minor = (unsigned int )dev & 255U;
# 2586 "md.c"
  if (minor >= 256U) {
# 2587 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2587);
# 2587 "md.c"
    md_print_devices();
# 2588 "md.c"
    return (-22);
  }
# 2595 "md.c"
  switch ((int )cmd) {
  case 2147485968U | (sizeof(mdu_version_t ) << 16):
# 2598 "md.c"
  err = get_version((void *)arg);
  goto done;
  case 2323U:
# 2602 "md.c"
  err = 0;
# 2603 "md.c"
  md_print_devices();
  goto done_unlock;
  case 2324U:
# 2608 "md.c"
  err = 0;
# 2609 "md.c"
  autostart_arrays();
  goto done;
  case 4704U:
# 2614 "md.c"
  if (! arg) {
# 2615 "md.c"
    err = -22;
# 2616 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2616);
# 2616 "md.c"
    md_print_devices();
    goto abort;
  }
# 2619 "md.c"
  __pu_err = -14L;
# 2619 "md.c"
  __pu_addr = (unsigned long *)arg;
# 2619 "md.c"
  tmp___0 = get_current();
# 2619 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag), "=r" (sum): "1" (__pu_addr),
            "g" ((int )sizeof((*((unsigned long *)arg)))), "g" (tmp___0->addr_limit.seg));
# 2619 "md.c"
  if (flag == 0UL) {
# 2619 "md.c"
    while (1) {
# 2619 "md.c"
      __pu_err = 0L;
# 2619 "md.c"
      switch ((int )sizeof((*((unsigned long *)arg)))) {
      case 1:
# 2619 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err): "iq" (md_hd_struct[minor].nr_sects),
                           "m" ((*((struct __large_struct *)__pu_addr))), "i" (-14),
                           "0" (__pu_err));
# 2619 "md.c"
      break;
      case 2:
# 2619 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err): "ir" (md_hd_struct[minor].nr_sects),
                           "m" ((*((struct __large_struct *)__pu_addr))), "i" (-14),
                           "0" (__pu_err));
# 2619 "md.c"
      break;
      case 4:
# 2619 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err): "ir" (md_hd_struct[minor].nr_sects),
                           "m" ((*((struct __large_struct *)__pu_addr))), "i" (-14),
                           "0" (__pu_err));
# 2619 "md.c"
      break;
      case 8:
# 2619 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err): "A" (md_hd_struct[minor].nr_sects),
                           "r" (__pu_addr), "i" (-14), "0" (__pu_err));
# 2619 "md.c"
      break;
      default:
# 2619 "md.c"
      __put_user_bad();
      }
# 2619 "md.c"
      break;
    }
  }
# 2619 "md.c"
  err = (int )__pu_err;
  goto done;
  case 2147488370U | (sizeof(sizeof(u64 )) << 16):
# 2624 "md.c"
  __pu_err___0 = -14L;
# 2624 "md.c"
  __pu_addr___0 = (u64 *)arg;
# 2624 "md.c"
  tmp___1 = get_current();
# 2624 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag___0), "=r" (sum___0): "1" (__pu_addr___0),
            "g" ((int )sizeof((*((u64 *)arg)))), "g" (tmp___1->addr_limit.seg));
# 2624 "md.c"
  if (flag___0 == 0UL) {
# 2624 "md.c"
    while (1) {
# 2624 "md.c"
      __pu_err___0 = 0L;
# 2624 "md.c"
      switch ((int )sizeof((*((u64 *)arg)))) {
      case 1:
# 2624 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___0): "iq" ((unsigned long long )md_hd_struct[minor].nr_sects << 9),
                           "m" ((*((struct __large_struct *)__pu_addr___0))), "i" (-14),
                           "0" (__pu_err___0));
# 2624 "md.c"
      break;
      case 2:
# 2624 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___0): "ir" ((unsigned long long )md_hd_struct[minor].nr_sects << 9),
                           "m" ((*((struct __large_struct *)__pu_addr___0))), "i" (-14),
                           "0" (__pu_err___0));
# 2624 "md.c"
      break;
      case 4:
# 2624 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___0): "ir" ((unsigned long long )md_hd_struct[minor].nr_sects << 9),
                           "m" ((*((struct __large_struct *)__pu_addr___0))), "i" (-14),
                           "0" (__pu_err___0));
# 2624 "md.c"
      break;
      case 8:
# 2624 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err___0): "A" ((unsigned long long )md_hd_struct[minor].nr_sects << 9),
                           "r" (__pu_addr___0), "i" (-14), "0" (__pu_err___0));
# 2624 "md.c"
      break;
      default:
# 2624 "md.c"
      __put_user_bad();
      }
# 2624 "md.c"
      break;
    }
  }
# 2624 "md.c"
  err = (int )__pu_err___0;
  goto done;
  case 4707U:
  case 4706U:
  case 4705U:
  case 2147488368U | (sizeof(sizeof(int )) << 16):
  case 1073746545U | (sizeof(sizeof(int )) << 16):
# 2633 "md.c"
  err = blk_ioctl(dev, cmd, arg);
  goto abort;
  default: ;
  }
# 2643 "md.c"
  mddev = kdev_to_mddev(dev);
# 2645 "md.c"
  switch ((int )cmd) {
  case 1073744163U | (sizeof(mdu_array_info_t ) << 16):
  case 2353U:
# 2649 "md.c"
  if (mddev) {
# 2650 "md.c"
    tmp___2 = mdidx(mddev);
# 2650 "md.c"
    printk("<4>md: array md%d already exists!\n", tmp___2);
# 2652 "md.c"
    err = -17;
    goto abort;
  }
  default: ;
  }
# 2657 "md.c"
  switch ((int )cmd) {
  case 1073744163U | (sizeof(mdu_array_info_t ) << 16):
# 2660 "md.c"
  mddev = alloc_mddev(dev);
# 2661 "md.c"
  if (! mddev) {
# 2662 "md.c"
    err = -12;
    goto abort;
  }
# 2665 "md.c"
  atomic_inc(& mddev->active);
# 2670 "md.c"
  err = lock_mddev(mddev);
# 2671 "md.c"
  if (err) {
# 2672 "md.c"
    printk("<4>md: ioctl, reason %d, cmd %d\n", err, cmd);
    goto abort;
  }
# 2677 "md.c"
  if (mddev->sb) {
# 2678 "md.c"
    tmp___3 = mdidx(mddev);
# 2678 "md.c"
    printk("<4>md: array md%d already has a superblock!\n", tmp___3);
# 2680 "md.c"
    err = -16;
    goto done_unlock;
  }
# 2683 "md.c"
  if (arg) {
# 2685 "md.c"
    tmp___4 = __constant_copy_from_user((void *)(& info), (void const *)((void *)arg),
                                        (unsigned long )sizeof(info));
# 2685 "md.c"
    if (tmp___4) {
# 2686 "md.c"
      err = -14;
      goto done_unlock;
    }
# 2689 "md.c"
    err = set_array_info(mddev, & info);
# 2690 "md.c"
    if (err) {
# 2691 "md.c"
      printk("<4>md: couldnt set array info. %d\n", err);
      goto done_unlock;
    }
  }
  goto done_unlock;
  case 2353U:
# 2701 "md.c"
  err = autostart_array((unsigned short )arg, dev);
# 2702 "md.c"
  if (err) {
# 2703 "md.c"
    tmp___6 = partition_name((unsigned short )arg);
# 2703 "md.c"
    printk("<4>md: autostart %s failed!\n", tmp___6);
    goto abort;
  }
  goto done;
  default: ;
  }
# 2716 "md.c"
  if (! mddev) {
# 2717 "md.c"
    err = -19;
    goto abort;
  }
# 2720 "md.c"
  err = lock_mddev(mddev);
# 2721 "md.c"
  if (err) {
# 2722 "md.c"
    printk("<6>md: ioctl lock interrupted, reason %d, cmd %d\n", err, cmd);
    goto abort;
  }
# 2726 "md.c"
  if (! mddev->sb) {
# 2726 "md.c"
    if (cmd != (1073744161U | (sizeof(mdu_disk_info_t ) << 16))) {
# 2726 "md.c"
      if (cmd != 2354U) {
# 2726 "md.c"
        if (cmd != (1073744176U | (sizeof(mdu_param_t ) << 16))) {
# 2727 "md.c"
          err = -19;
          goto done_unlock;
        }
      }
    }
  }
# 2734 "md.c"
  switch ((int )cmd) {
  case 2147485969U | (sizeof(mdu_array_info_t ) << 16):
# 2737 "md.c"
  err = get_array_info(mddev, (void *)arg);
  goto done_unlock;
  case 2147485970U | (sizeof(mdu_disk_info_t ) << 16):
# 2741 "md.c"
  err = get_disk_info(mddev, (void *)arg);
  goto done_unlock;
  case 2356U:
# 2745 "md.c"
  err = restart_array(mddev);
  goto done_unlock;
  case 2354U:
# 2749 "md.c"
  err = do_md_stop(mddev, 0);
# 2749 "md.c"
  if (! err) {
# 2750 "md.c"
    mddev = (mddev_t *)((void *)0);
  }
  goto done_unlock;
  case 2355U:
# 2754 "md.c"
  err = do_md_stop(mddev, 1);
  goto done_unlock;
  case 769:
# 2764 "md.c"
  if (! loc) {
# 2765 "md.c"
    err = -22;
    goto done_unlock;
  }
# 2768 "md.c"
  __pu_err___1 = -14L;
# 2768 "md.c"
  __pu_addr___1 = (char *)(& loc->heads);
# 2768 "md.c"
  tmp___7 = get_current();
# 2768 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag___1), "=r" (sum___1): "1" (__pu_addr___1),
            "g" ((int )sizeof((*((char *)(& loc->heads))))), "g" (tmp___7->addr_limit.seg));
# 2768 "md.c"
  if (flag___1 == 0UL) {
# 2768 "md.c"
    while (1) {
# 2768 "md.c"
      __pu_err___1 = 0L;
# 2768 "md.c"
      switch ((int )sizeof((*((char *)(& loc->heads))))) {
      case 1:
# 2768 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___1): "iq" ((char)2), "m" ((*((struct __large_struct *)__pu_addr___1))),
                           "i" (-14), "0" (__pu_err___1));
# 2768 "md.c"
      break;
      case 2:
# 2768 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___1): "ir" ((char)2), "m" ((*((struct __large_struct *)__pu_addr___1))),
                           "i" (-14), "0" (__pu_err___1));
# 2768 "md.c"
      break;
      case 4:
# 2768 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___1): "ir" ((char)2), "m" ((*((struct __large_struct *)__pu_addr___1))),
                           "i" (-14), "0" (__pu_err___1));
# 2768 "md.c"
      break;
      case 8:
# 2768 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err___1): "A" ((char)2), "r" (__pu_addr___1),
                           "i" (-14), "0" (__pu_err___1));
# 2768 "md.c"
      break;
      default:
# 2768 "md.c"
      __put_user_bad();
      }
# 2768 "md.c"
      break;
    }
  }
# 2768 "md.c"
  err = (int )__pu_err___1;
# 2769 "md.c"
  if (err) {
    goto done_unlock;
  }
# 2771 "md.c"
  __pu_err___2 = -14L;
# 2771 "md.c"
  __pu_addr___2 = (char *)(& loc->sectors);
# 2771 "md.c"
  tmp___8 = get_current();
# 2771 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag___2), "=r" (sum___2): "1" (__pu_addr___2),
            "g" ((int )sizeof((*((char *)(& loc->sectors))))), "g" (tmp___8->addr_limit.seg));
# 2771 "md.c"
  if (flag___2 == 0UL) {
# 2771 "md.c"
    while (1) {
# 2771 "md.c"
      __pu_err___2 = 0L;
# 2771 "md.c"
      switch ((int )sizeof((*((char *)(& loc->sectors))))) {
      case 1:
# 2771 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___2): "iq" ((char)4), "m" ((*((struct __large_struct *)__pu_addr___2))),
                           "i" (-14), "0" (__pu_err___2));
# 2771 "md.c"
      break;
      case 2:
# 2771 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___2): "ir" ((char)4), "m" ((*((struct __large_struct *)__pu_addr___2))),
                           "i" (-14), "0" (__pu_err___2));
# 2771 "md.c"
      break;
      case 4:
# 2771 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___2): "ir" ((char)4), "m" ((*((struct __large_struct *)__pu_addr___2))),
                           "i" (-14), "0" (__pu_err___2));
# 2771 "md.c"
      break;
      case 8:
# 2771 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err___2): "A" ((char)4), "r" (__pu_addr___2),
                           "i" (-14), "0" (__pu_err___2));
# 2771 "md.c"
      break;
      default:
# 2771 "md.c"
      __put_user_bad();
      }
# 2771 "md.c"
      break;
    }
  }
# 2771 "md.c"
  err = (int )__pu_err___2;
# 2772 "md.c"
  if (err) {
    goto done_unlock;
  }
# 2774 "md.c"
  __pu_err___3 = -14L;
# 2774 "md.c"
  __pu_addr___3 = (short *)(& loc->cylinders);
# 2774 "md.c"
  tmp___13 = get_current();
# 2774 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag___3), "=r" (sum___3): "1" (__pu_addr___3),
            "g" ((int )sizeof((*((short *)(& loc->cylinders))))), "g" (tmp___13->addr_limit.seg));
# 2774 "md.c"
  if (flag___3 == 0UL) {
# 2774 "md.c"
    while (1) {
# 2774 "md.c"
      __pu_err___3 = 0L;
# 2774 "md.c"
      switch ((int )sizeof((*((short *)(& loc->cylinders))))) {
      case 1:
# 2774 "md.c"
      tmp___9 = mdidx(mddev);
# 2774 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___3): "iq" ((short )(md_hd_struct[tmp___9].nr_sects / 8UL)),
                           "m" ((*((struct __large_struct *)__pu_addr___3))), "i" (-14),
                           "0" (__pu_err___3));
# 2774 "md.c"
      break;
      case 2:
# 2774 "md.c"
      tmp___10 = mdidx(mddev);
# 2774 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___3): "ir" ((short )(md_hd_struct[tmp___10].nr_sects / 8UL)),
                           "m" ((*((struct __large_struct *)__pu_addr___3))), "i" (-14),
                           "0" (__pu_err___3));
# 2774 "md.c"
      break;
      case 4:
# 2774 "md.c"
      tmp___11 = mdidx(mddev);
# 2774 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___3): "ir" ((short )(md_hd_struct[tmp___11].nr_sects / 8UL)),
                           "m" ((*((struct __large_struct *)__pu_addr___3))), "i" (-14),
                           "0" (__pu_err___3));
# 2774 "md.c"
      break;
      case 8:
# 2774 "md.c"
      tmp___12 = mdidx(mddev);
# 2774 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err___3): "A" ((short )(md_hd_struct[tmp___12].nr_sects / 8UL)),
                           "r" (__pu_addr___3), "i" (-14), "0" (__pu_err___3));
# 2774 "md.c"
      break;
      default:
# 2774 "md.c"
      __put_user_bad();
      }
# 2774 "md.c"
      break;
    }
  }
# 2774 "md.c"
  err = (int )__pu_err___3;
# 2776 "md.c"
  if (err) {
    goto done_unlock;
  }
# 2778 "md.c"
  __pu_err___4 = -14L;
# 2778 "md.c"
  __pu_addr___4 = (long *)(& loc->start);
# 2778 "md.c"
  tmp___14 = get_current();
# 2778 "md.c"
  __asm__ ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0": "=&r" (flag___4), "=r" (sum___4): "1" (__pu_addr___4),
            "g" ((int )sizeof((*((long *)(& loc->start))))), "g" (tmp___14->addr_limit.seg));
# 2778 "md.c"
  if (flag___4 == 0UL) {
# 2778 "md.c"
    while (1) {
# 2778 "md.c"
      __pu_err___4 = 0L;
# 2778 "md.c"
      switch ((int )sizeof((*((long *)(& loc->start))))) {
      case 1:
# 2778 "md.c"
      __asm__ volatile ("1:\tmov"
                           "b"
                           " %"
                           "b"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___4): "iq" ((long )md_hd_struct[minor].start_sect),
                           "m" ((*((struct __large_struct *)__pu_addr___4))), "i" (-14),
                           "0" (__pu_err___4));
# 2778 "md.c"
      break;
      case 2:
# 2778 "md.c"
      __asm__ volatile ("1:\tmov"
                           "w"
                           " %"
                           "w"
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___4): "ir" ((long )md_hd_struct[minor].start_sect),
                           "m" ((*((struct __large_struct *)__pu_addr___4))), "i" (-14),
                           "0" (__pu_err___4));
# 2778 "md.c"
      break;
      case 4:
# 2778 "md.c"
      __asm__ volatile ("1:\tmov"
                           "l"
                           " %"
                           ""
                           "1,%2\n"
                           "2:\n"
                           ".section .fixup,\"ax\"\n"
                           "3:\tmovl %3,%0\n"
                           "\tjmp 2b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,3b\n"
                           ".previous": "=r" (__pu_err___4): "ir" ((long )md_hd_struct[minor].start_sect),
                           "m" ((*((struct __large_struct *)__pu_addr___4))), "i" (-14),
                           "0" (__pu_err___4));
# 2778 "md.c"
      break;
      case 8:
# 2778 "md.c"
      __asm__ volatile ("1:\tmovl %%eax,0(%2)\n"
                           "2:\tmovl %%edx,4(%2)\n"
                           "3:\n"
                           ".section .fixup,\"ax\"\n"
                           "4:\tmovl %3,%0\n"
                           "\tjmp 3b\n"
                           ".previous\n"
                           ".section __ex_table,\"a\"\n"
                           "\t.align 4\n"
                           "\t.long 1b,4b\n"
                           "\t.long 2b,4b\n"
                           ".previous": "=r" (__pu_err___4): "A" ((long )md_hd_struct[minor].start_sect),
                           "r" (__pu_addr___4), "i" (-14), "0" (__pu_err___4));
# 2778 "md.c"
      break;
      default:
# 2778 "md.c"
      __put_user_bad();
      }
# 2778 "md.c"
      break;
    }
  }
# 2778 "md.c"
  err = (int )__pu_err___4;
  goto done_unlock;
  }
# 2788 "md.c"
  if (mddev->ro) {
# 2789 "md.c"
    err = -30;
    goto done_unlock;
  }
# 2793 "md.c"
  switch ((int )cmd) {
  case 2336U:
# 2796 "md.c"
  err = clear_array(mddev);
  goto done_unlock;
  case 1073744161U | (sizeof(mdu_disk_info_t ) << 16):
# 2802 "md.c"
  tmp___15 = __constant_copy_from_user((void *)(& info___0), (void const *)((void *)arg),
                                       (unsigned long )sizeof(info___0));
# 2802 "md.c"
  if (tmp___15) {
# 2803 "md.c"
    err = -14;
  } else {
# 2805 "md.c"
    err = add_new_disk(mddev, & info___0);
  }
  goto done_unlock;
  case 2346U:
# 2809 "md.c"
  err = hot_generate_error(mddev, (unsigned short )arg);
  goto done_unlock;
  case 2338U:
# 2812 "md.c"
  err = hot_remove_disk(mddev, (unsigned short )arg);
  goto done_unlock;
  case 2344U:
# 2816 "md.c"
  err = hot_add_disk(mddev, (unsigned short )arg);
  goto done_unlock;
  case 2340U:
# 2820 "md.c"
  err = set_disk_info(mddev, (void *)arg);
  goto done_unlock;
  case 2341U:
# 2824 "md.c"
  err = write_raid_info(mddev);
  goto done_unlock;
  case 2342U:
# 2828 "md.c"
  err = unprotect_array(mddev);
  goto done_unlock;
  case 2343U:
# 2832 "md.c"
  err = protect_array(mddev);
  goto done_unlock;
  case 2345U:
# 2836 "md.c"
  err = set_disk_faulty(mddev, (unsigned short )arg);
  goto done_unlock;
  case 1073744176U | (sizeof(mdu_param_t ) << 16):
# 2848 "md.c"
  err = do_md_run(mddev);
# 2854 "md.c"
  if (err) {
# 2855 "md.c"
    mddev->sb_dirty = 0;
# 2856 "md.c"
    tmp___17 = do_md_stop(mddev, 0);
# 2856 "md.c"
    if (! tmp___17) {
# 2857 "md.c"
      mddev = (mddev_t *)((void *)0);
    }
  }
  goto done_unlock;
  default:
# 2863 "md.c"
  tmp___18 = get_current();
# 2863 "md.c"
  tmp___19 = get_current();
# 2863 "md.c"
  printk("<4>md: %s(pid %d) used obsolete MD ioctl, upgrade your software to use new ictls.\n",
         tmp___19->comm, tmp___18->pid);
# 2866 "md.c"
  err = -22;
  goto done_unlock;
  }
  done_unlock:
# 2872 "md.c"
  if (mddev) {
# 2873 "md.c"
    unlock_mddev(mddev);
  }
# 2875 "md.c"
  return (err);
  done:
# 2877 "md.c"
  if (err) {
# 2878 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 2878);
# 2878 "md.c"
    md_print_devices();
  }
  abort:
# 2880 "md.c"
  return (err);
}
}
# 2883 "md.c"
static int md_open(struct inode *inode , struct file *file )
{ mddev_t *mddev ;
  mddev_t *tmp ;

  {
# 2888 "md.c"
  tmp = kdev_to_mddev(inode->i_rdev);
# 2888 "md.c"
  mddev = tmp;
# 2889 "md.c"
  if (mddev) {
# 2890 "md.c"
    atomic_inc(& mddev->active);
  }
# 2891 "md.c"
  return (0);
}
}
# 2894 "md.c"
static int md_release(struct inode *inode , struct file *file )
{ mddev_t *mddev ;
  mddev_t *tmp ;

  {
# 2896 "md.c"
  tmp = kdev_to_mddev(inode->i_rdev);
# 2896 "md.c"
  mddev = tmp;
# 2897 "md.c"
  if (mddev) {
# 2898 "md.c"
    atomic_dec(& mddev->active);
  }
# 2899 "md.c"
  return (0);
}
}
# 2902 "md.c"
static struct block_device_operations md_fops = {& md_open, & md_release, & md_ioctl, (int (*)(kdev_t ))0, (int (*)(kdev_t ))0,
    (struct module *)((void *)0)};
# 2911 "md.c"
int md_thread(void *arg )
{ mdk_thread_t *thread ;
  struct task_struct *tmp ;
  struct task_struct *tmp___0 ;
  struct task_struct *tmp___1 ;
  void (*run)(void *data ) ;
  wait_queue_t wait___0 ;
  struct task_struct *tmp___2 ;
  struct task_struct *tmp___5 ;
  struct task_struct *tmp___6 ;
  int tmp___7 ;
  struct task_struct *tmp___9 ;
  struct task_struct *tmp___10 ;
  int tmp___11 ;

  {
# 2913 "md.c"
  thread = (mdk_thread_t *)arg;
# 2915 "md.c"
  lock_kernel();
# 2921 "md.c"
  daemonize();
# 2923 "md.c"
  tmp = get_current();
# 2923 "md.c"
  sprintf(tmp->comm, thread->name);
# 2924 "md.c"
  md_init_signals();
# 2925 "md.c"
  md_flush_signals();
# 2926 "md.c"
  thread->tsk = get_current();
# 2939 "md.c"
  tmp___0 = get_current();
# 2939 "md.c"
  tmp___0->policy = 0UL;
# 2940 "md.c"
  tmp___1 = get_current();
# 2940 "md.c"
  tmp___1->nice = -20L;
# 2941 "md.c"
  unlock_kernel();
# 2943 "md.c"
  complete(thread->event);
# 2944 "md.c"
  while (thread->run) {
# 2946 "md.c"
    tmp___2 = get_current();
# 2946 "md.c"
    tmp___2 = get_current();
# 2946 "md.c"
    wait___0.flags = 0U;
# 2946 "md.c"
    wait___0.task = tmp___2;
# 2946 "md.c"
    wait___0.task_list.next = (struct list_head *)((void *)0);
# 2946 "md.c"
    wait___0.task_list.prev = (struct list_head *)((void *)0);
# 2948 "md.c"
    add_wait_queue(& thread->wqueue, & wait___0);
# 2949 "md.c"
    while (1) {
# 2949 "md.c"
      tmp___6 = get_current();
# 2949 "md.c"
      __xchg(1UL, (void volatile *)(& tmp___6->state), (int )sizeof(tmp___5->state));
# 2949 "md.c"
      break;
    }
# 2950 "md.c"
    tmp___7 = constant_test_bit(0, (void const volatile *)(& thread->flags));
# 2950 "md.c"
    if (! tmp___7) {
# 2951 "md.c"
      while (1) {
# 2951 "md.c"
        break;
      }
# 2952 "md.c"
      schedule();
# 2953 "md.c"
      while (1) {
# 2953 "md.c"
        break;
      }
    }
# 2955 "md.c"
    tmp___9 = get_current();
# 2955 "md.c"
    tmp___9->state = (long volatile )0;
# 2956 "md.c"
    remove_wait_queue(& thread->wqueue, & wait___0);
# 2957 "md.c"
    clear_bit(0, (void volatile *)(& thread->flags));
# 2959 "md.c"
    run = thread->run;
# 2960 "md.c"
    if (run) {
# 2961 "md.c"
      ((*run))(thread->data);
# 2962 "md.c"
      run_task_queue(& tq_disk);
    }
# 2964 "md.c"
    tmp___10 = get_current();
# 2964 "md.c"
    tmp___11 = signal_pending(tmp___10);
# 2964 "md.c"
    if (tmp___11) {
# 2965 "md.c"
      md_flush_signals();
    }
  }
# 2967 "md.c"
  complete(thread->event);
# 2968 "md.c"
  return (0);
}
}
# 2971 "md.c"
void md_wakeup_thread(mdk_thread_t *thread )
{

  {
# 2973 "md.c"
  while (1) {
# 2973 "md.c"
    break;
  }
# 2974 "md.c"
  set_bit(0, (void volatile *)(& thread->flags));
# 2975 "md.c"
  __wake_up(& thread->wqueue, 3U, 1);
# 2976 "md.c"
  return;
}
}
# 2978 "md.c"
mdk_thread_t *md_register_thread(void (*run)(void *data ) , void *data , char const *name )
{ mdk_thread_t *thread ;
  int ret ;
  struct completion event___0 ;

  {
# 2985 "md.c"
  thread = (mdk_thread_t *)kmalloc(sizeof(mdk_thread_t ), 496);
# 2987 "md.c"
  if (! thread) {
# 2988 "md.c"
    return ((mdk_thread_t *)((void *)0));
  }
# 2990 "md.c"
  __constant_c_and_count_memset((void *)thread, 0UL, sizeof(mdk_thread_t ));
# 2991 "md.c"
  init_waitqueue_head(& thread->wqueue);
# 2993 "md.c"
  init_completion(& event___0);
# 2994 "md.c"
  thread->event = & event___0;
# 2995 "md.c"
  thread->run = run;
# 2996 "md.c"
  thread->data = data;
# 2997 "md.c"
  thread->name = name;
# 2998 "md.c"
  ret = kernel_thread(& md_thread, (void *)thread, 0UL);
# 2999 "md.c"
  if (ret < 0) {
# 3000 "md.c"
    kfree((void const *)thread);
# 3001 "md.c"
    return ((mdk_thread_t *)((void *)0));
  }
# 3003 "md.c"
  wait_for_completion(& event___0);
# 3004 "md.c"
  return (thread);
}
}
# 3007 "md.c"
void md_interrupt_thread(mdk_thread_t *thread )
{

  {
# 3009 "md.c"
  if (! thread->tsk) {
# 3010 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3010);
# 3010 "md.c"
    md_print_devices();
# 3011 "md.c"
    return;
  }
# 3013 "md.c"
  while (1) {
# 3013 "md.c"
    break;
  }
# 3014 "md.c"
  send_sig(9, thread->tsk, 1);
# 3015 "md.c"
  return;
}
}
# 3017 "md.c"
void md_unregister_thread(mdk_thread_t *thread )
{ struct completion event___0 ;

  {
# 3021 "md.c"
  init_completion(& event___0);
# 3023 "md.c"
  thread->event = & event___0;
# 3024 "md.c"
  thread->run = (void (*)(void *data ))((void *)0);
# 3025 "md.c"
  thread->name = (char const *)((void *)0);
# 3026 "md.c"
  md_interrupt_thread(thread);
# 3027 "md.c"
  wait_for_completion(& event___0);
# 3028 "md.c"
  kfree((void const *)thread);
# 3029 "md.c"
  return;
}
}
# 3031 "md.c"
void md_recover_arrays(void)
{

  {
# 3033 "md.c"
  if (! md_recovery_thread) {
# 3034 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3034);
# 3034 "md.c"
    md_print_devices();
# 3035 "md.c"
    return;
  }
# 3037 "md.c"
  md_wakeup_thread(md_recovery_thread);
# 3038 "md.c"
  return;
}
}
# 3041 "md.c"
int md_error(mddev_t *mddev , kdev_t rdev )
{ mdk_rdev_t *rrdev ;
  int tmp ;

  {
# 3045 "md.c"
  while (1) {
# 3045 "md.c"
    break;
  }
# 3050 "md.c"
  if (! mddev) {
# 3051 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3051);
# 3051 "md.c"
    md_print_devices();
# 3052 "md.c"
    return (0);
  }
# 3054 "md.c"
  rrdev = find_rdev(mddev, rdev);
# 3055 "md.c"
  if (! rrdev) {
# 3056 "md.c"
    return (0);
  } else {
# 3055 "md.c"
    if (rrdev->faulty) {
# 3056 "md.c"
      return (0);
    }
  }
# 3057 "md.c"
  if (! (mddev->pers)->error_handler) {
# 3059 "md.c"
    free_disk_sb(rrdev);
# 3060 "md.c"
    rrdev->faulty = 1;
  } else {
# 3057 "md.c"
    tmp = ((*((mddev->pers)->error_handler)))(mddev, rdev);
# 3057 "md.c"
    if (tmp <= 0) {
# 3059 "md.c"
      free_disk_sb(rrdev);
# 3060 "md.c"
      rrdev->faulty = 1;
    } else {
# 3062 "md.c"
      return (1);
    }
  }
# 3066 "md.c"
  if ((mddev->pers)->stop_resync) {
# 3067 "md.c"
    ((*((mddev->pers)->stop_resync)))(mddev);
  }
# 3068 "md.c"
  if (mddev->recovery_running) {
# 3069 "md.c"
    md_interrupt_thread(md_recovery_thread);
  }
# 3070 "md.c"
  md_recover_arrays();
# 3072 "md.c"
  return (0);
}
}
# 3075 "md.c"
static int status_unused(char *page )
{ int sz ;
  int i ;
  mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  int tmp___0 ;
  char *tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;

  {
# 3077 "md.c"
  sz = 0;
# 3077 "md.c"
  i = 0;
# 3081 "md.c"
  tmp___0 = sprintf(page + sz, "unused devices: ");
# 3081 "md.c"
  sz += tmp___0;
# 3083 "md.c"
  tmp = all_raid_disks.next;
# 3083 "md.c"
  while (1) {
# 3083 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->all));
# 3083 "md.c"
    tmp = tmp->next;
# 3083 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& all_raid_disks))) {
# 3083 "md.c"
      break;
    }
# 3084 "md.c"
    if (! rdev->same_set.next) {
# 3084 "md.c"
      if (! rdev->same_set.prev) {
# 3088 "md.c"
        i ++;
# 3089 "md.c"
        tmp___1 = partition_name(rdev->dev);
# 3089 "md.c"
        tmp___2 = sprintf(page + sz, "%s ", tmp___1);
# 3089 "md.c"
        sz += tmp___2;
      }
    }
  }
# 3093 "md.c"
  if (! i) {
# 3094 "md.c"
    tmp___3 = sprintf(page + sz, "<none>");
# 3094 "md.c"
    sz += tmp___3;
  }
# 3096 "md.c"
  tmp___4 = sprintf(page + sz, "\n");
# 3096 "md.c"
  sz += tmp___4;
# 3097 "md.c"
  return (sz);
}
}
# 3101 "md.c"
static int status_resync(char *page , mddev_t *mddev )
{ int sz ;
  unsigned long max_blocks ;
  unsigned long resync ;
  unsigned long res ;
  unsigned long dt ;
  unsigned long db ;
  unsigned long rt ;
  int i ;
  int x ;
  int y ;
  int tmp ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;
  int tmp___5 ;
  int tmp___6 ;
  int tmp___7 ;

  {
# 3103 "md.c"
  sz = 0;
# 3106 "md.c"
  resync = (mddev->curr_resync - (unsigned long )mddev->recovery_active.counter) / 2UL;
# 3107 "md.c"
  max_blocks = (unsigned long )(mddev->sb)->size;
# 3112 "md.c"
  if (! max_blocks) {
# 3113 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3113);
# 3113 "md.c"
    md_print_devices();
# 3114 "md.c"
    return (0);
  }
# 3116 "md.c"
  res = ((resync / 1024UL) * 1000UL) / (max_blocks / 1024UL + 1UL);
# 3118 "md.c"
  x = (int )(res / 50UL);
# 3118 "md.c"
  y = 20 - x;
# 3119 "md.c"
  tmp = sprintf(page + sz, "[");
# 3119 "md.c"
  sz += tmp;
# 3120 "md.c"
  i = 0;
# 3120 "md.c"
  while (i < x) {
# 3121 "md.c"
    tmp___0 = sprintf(page + sz, "=");
# 3121 "md.c"
    sz += tmp___0;
# 3120 "md.c"
    i ++;
  }
# 3122 "md.c"
  tmp___1 = sprintf(page + sz, ">");
# 3122 "md.c"
  sz += tmp___1;
# 3123 "md.c"
  i = 0;
# 3123 "md.c"
  while (i < y) {
# 3124 "md.c"
    tmp___2 = sprintf(page + sz, ".");
# 3124 "md.c"
    sz += tmp___2;
# 3123 "md.c"
    i ++;
  }
# 3125 "md.c"
  tmp___3 = sprintf(page + sz, "] ");
# 3125 "md.c"
  sz += tmp___3;
# 3127 "md.c"
  if (! mddev->recovery_running) {
# 3131 "md.c"
    tmp___4 = sprintf(page + sz, " resync =%3lu.%lu%% (%lu/%lu)", res / 10UL, res % 10UL,
                      resync, max_blocks);
# 3131 "md.c"
    sz += tmp___4;
  } else {
# 3137 "md.c"
    tmp___5 = sprintf(page + sz, " recovery =%3lu.%lu%% (%lu/%lu)", res / 10UL, res % 10UL,
                      resync, max_blocks);
# 3137 "md.c"
    sz += tmp___5;
  }
# 3149 "md.c"
  dt = (unsigned long )((jiffies - (unsigned long volatile )mddev->resync_mark) / 100UL);
# 3150 "md.c"
  if (! dt) {
# 3150 "md.c"
    dt ++;
  }
# 3151 "md.c"
  db = resync - mddev->resync_mark_cnt / 2UL;
# 3152 "md.c"
  rt = (dt * ((max_blocks - resync) / (db / 100UL + 1UL))) / 100UL;
# 3154 "md.c"
  tmp___6 = sprintf(page + sz, " finish=%lu.%lumin", rt / 60UL, (rt % 60UL) / 6UL);
# 3154 "md.c"
  sz += tmp___6;
# 3156 "md.c"
  tmp___7 = sprintf(page + sz, " speed=%ldK/sec", db / dt);
# 3156 "md.c"
  sz += tmp___7;
# 3158 "md.c"
  return (sz);
}
}
# 3161 "md.c"
static int md_status_read_proc(char *page , char **start , off_t off , int count ,
                               int *eof , void *data )
{ int sz ;
  int j ;
  int size ;
  struct list_head *tmp ;
  struct list_head *tmp2 ;
  mdk_rdev_t *rdev ;
  mddev_t *mddev ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;
  int tmp___5 ;
  char const *tmp___6 ;
  int tmp___7 ;
  int tmp___8 ;
  int tmp___9 ;
  int tmp___10 ;
  char *tmp___11 ;
  int tmp___12 ;
  int tmp___13 ;
  int tmp___14 ;
  int tmp___15 ;
  int tmp___16 ;
  int tmp___17 ;
  int tmp___18 ;
  int tmp___19 ;
  int tmp___20 ;
  int tmp___21 ;
  int tmp___22 ;
  int tmp___23 ;

  {
# 3164 "md.c"
  sz = 0;
# 3169 "md.c"
  tmp___0 = sprintf(page + sz, "Personalities : ");
# 3169 "md.c"
  sz += tmp___0;
# 3170 "md.c"
  j = 0;
# 3170 "md.c"
  while ((unsigned long )j < 8UL) {
# 3171 "md.c"
    if (pers[j]) {
# 3172 "md.c"
      tmp___1 = sprintf(page + sz, "[%s] ", (pers[j])->name);
# 3172 "md.c"
      sz += tmp___1;
    }
# 3170 "md.c"
    j ++;
  }
# 3174 "md.c"
  tmp___2 = sprintf(page + sz, "\n");
# 3174 "md.c"
  sz += tmp___2;
# 3177 "md.c"
  tmp___3 = sprintf(page + sz, "read_ahead ");
# 3177 "md.c"
  sz += tmp___3;
# 3178 "md.c"
  if (read_ahead[9] == 2147483647) {
# 3179 "md.c"
    tmp___4 = sprintf(page + sz, "not set\n");
# 3179 "md.c"
    sz += tmp___4;
  } else {
# 3181 "md.c"
    tmp___5 = sprintf(page + sz, "%d sectors\n", read_ahead[9]);
# 3181 "md.c"
    sz += tmp___5;
  }
# 3183 "md.c"
  tmp = all_mddevs.next;
# 3183 "md.c"
  while (1) {
# 3183 "md.c"
    mddev = (mddev_t *)((char *)tmp - (unsigned long )(& ((mddev_t *)0)->all_mddevs));
# 3183 "md.c"
    tmp = tmp->next;
# 3183 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& all_mddevs))) {
# 3183 "md.c"
      break;
    }
# 3184 "md.c"
    if (mddev->pers) {
# 3184 "md.c"
      tmp___6 = "";
    } else {
# 3184 "md.c"
      tmp___6 = "in";
    }
# 3184 "md.c"
    tmp___7 = mdidx(mddev);
# 3184 "md.c"
    tmp___8 = sprintf(page + sz, "md%d : %sactive", tmp___7, tmp___6);
# 3184 "md.c"
    sz += tmp___8;
# 3186 "md.c"
    if (mddev->pers) {
# 3187 "md.c"
      if (mddev->ro) {
# 3188 "md.c"
        tmp___9 = sprintf(page + sz, " (read-only)");
# 3188 "md.c"
        sz += tmp___9;
      }
# 3189 "md.c"
      tmp___10 = sprintf(page + sz, " %s", (mddev->pers)->name);
# 3189 "md.c"
      sz += tmp___10;
    }
# 3192 "md.c"
    size = 0;
# 3193 "md.c"
    tmp2 = mddev->disks.next;
# 3193 "md.c"
    while (1) {
# 3193 "md.c"
      rdev = (mdk_rdev_t *)((char *)tmp2 - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 3193 "md.c"
      tmp2 = tmp2->next;
# 3193 "md.c"
      if (! ((unsigned int )tmp2->prev != (unsigned int )(& mddev->disks))) {
# 3193 "md.c"
        break;
      }
# 3194 "md.c"
      tmp___11 = partition_name(rdev->dev);
# 3194 "md.c"
      tmp___12 = sprintf(page + sz, " %s[%d]", tmp___11, rdev->desc_nr);
# 3194 "md.c"
      sz += tmp___12;
# 3196 "md.c"
      if (rdev->faulty) {
# 3197 "md.c"
        tmp___13 = sprintf(page + sz, "(F)");
# 3197 "md.c"
        sz += tmp___13;
        goto __Cont;
      }
# 3200 "md.c"
      size = (int )((unsigned long )size + rdev->size);
      __Cont: ;
    }
# 3203 "md.c"
    if (mddev->nb_dev) {
# 3204 "md.c"
      if (mddev->pers) {
# 3205 "md.c"
        tmp___14 = mdidx(mddev);
# 3205 "md.c"
        tmp___15 = sprintf(page + sz, "\n      %d blocks", md_size[tmp___14]);
# 3205 "md.c"
        sz += tmp___15;
      } else {
# 3208 "md.c"
        tmp___16 = sprintf(page + sz, "\n      %d blocks", size);
# 3208 "md.c"
        sz += tmp___16;
      }
    }
# 3211 "md.c"
    if (! mddev->pers) {
# 3212 "md.c"
      tmp___17 = sprintf(page + sz, "\n");
# 3212 "md.c"
      sz += tmp___17;
      goto __Cont___0;
    }
# 3216 "md.c"
    tmp___18 = ((*((mddev->pers)->status)))(page + sz, mddev);
# 3216 "md.c"
    sz += tmp___18;
# 3218 "md.c"
    tmp___19 = sprintf(page + sz, "\n      ");
# 3218 "md.c"
    sz += tmp___19;
# 3219 "md.c"
    if (mddev->curr_resync) {
# 3220 "md.c"
      tmp___20 = status_resync(page + sz, mddev);
# 3220 "md.c"
      sz += tmp___20;
    } else {
# 3222 "md.c"
      if (mddev->resync_sem.count.counter != 1) {
# 3223 "md.c"
        tmp___21 = sprintf(page + sz, "\tresync=DELAYED");
# 3223 "md.c"
        sz += tmp___21;
      }
    }
# 3225 "md.c"
    tmp___22 = sprintf(page + sz, "\n");
# 3225 "md.c"
    sz += tmp___22;
    __Cont___0: ;
  }
# 3227 "md.c"
  tmp___23 = status_unused(page + sz);
# 3227 "md.c"
  sz += tmp___23;
# 3229 "md.c"
  return (sz);
}
}
# 3232 "md.c"
int register_md_personality(int pnum , mdk_personality_t *p )
{

  {
# 3234 "md.c"
  if ((unsigned long )pnum >= 8UL) {
# 3235 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3235);
# 3235 "md.c"
    md_print_devices();
# 3236 "md.c"
    return (-22);
  }
# 3239 "md.c"
  if (pers[pnum]) {
# 3240 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3240);
# 3240 "md.c"
    md_print_devices();
# 3241 "md.c"
    return (-16);
  }
# 3244 "md.c"
  pers[pnum] = p;
# 3245 "md.c"
  printk("<6>md: %s personality registered as nr %d\n", p->name, pnum);
# 3246 "md.c"
  return (0);
}
}
# 3249 "md.c"
int unregister_md_personality(int pnum )
{

  {
# 3251 "md.c"
  if ((unsigned long )pnum >= 8UL) {
# 3252 "md.c"
    printk("md: bug in file %s, line %d\n", "md.c", 3252);
# 3252 "md.c"
    md_print_devices();
# 3253 "md.c"
    return (-22);
  }
# 3256 "md.c"
  printk("<6>md: %s personality unregistered\n", (pers[pnum])->name);
# 3257 "md.c"
  pers[pnum] = (mdk_personality_t *)((void *)0);
# 3258 "md.c"
  return (0);
}
}
# 3261 "md.c"
mdp_disk_t *get_spare(mddev_t *mddev )
{ mdp_super_t *sb ;
  mdp_disk_t *disk ;
  mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  int tmp___0 ;
  int tmp___1 ;

  {
# 3263 "md.c"
  sb = mddev->sb;
# 3268 "md.c"
  tmp = mddev->disks.next;
# 3268 "md.c"
  while (1) {
# 3268 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 3268 "md.c"
    tmp = tmp->next;
# 3268 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 3268 "md.c"
      break;
    }
# 3269 "md.c"
    if (rdev->faulty) {
      goto __Cont;
    }
# 3271 "md.c"
    if (! rdev->sb) {
# 3272 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 3272);
# 3272 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 3275 "md.c"
    disk = & sb->disks[rdev->desc_nr];
# 3276 "md.c"
    tmp___0 = disk_faulty(disk);
# 3276 "md.c"
    if (tmp___0) {
# 3277 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 3277);
# 3277 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 3280 "md.c"
    tmp___1 = disk_active(disk);
# 3280 "md.c"
    if (tmp___1) {
      goto __Cont;
    }
# 3282 "md.c"
    return (disk);
    __Cont: ;
  }
# 3284 "md.c"
  return ((mdp_disk_t *)((void *)0));
}
}
# 3287 "md.c"
static unsigned int sync_io[16][16] ;
# 3288 "md.c"
void md_sync_acct(kdev_t dev , unsigned long nr_sectors )
{ unsigned int major ;
  unsigned int index ;

  {
# 3290 "md.c"
  major = (unsigned int )((int )dev >> 8);
# 3293 "md.c"
  index = disk_index(dev);
# 3294 "md.c"
  if (index >= 16U) {
# 3295 "md.c"
    return;
  } else {
# 3294 "md.c"
    if (major >= 16U) {
# 3295 "md.c"
      return;
    }
  }
# 3297 "md.c"
  sync_io[major][index] = (unsigned int )((unsigned long )sync_io[major][index] + nr_sectors);
# 3298 "md.c"
  return;
}
}
# 3300 "md.c"
static int is_mddev_idle(mddev_t *mddev )
{ mdk_rdev_t *rdev ;
  struct list_head *tmp ;
  int idle ;
  unsigned long curr_events ;
  int major ;
  int idx ;
  int tmp___0 ;

  {
# 3307 "md.c"
  idle = 1;
# 3308 "md.c"
  tmp = mddev->disks.next;
# 3308 "md.c"
  while (1) {
# 3308 "md.c"
    rdev = (mdk_rdev_t *)((char *)tmp - (unsigned long )(& ((mdk_rdev_t *)0)->same_set));
# 3308 "md.c"
    tmp = tmp->next;
# 3308 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& mddev->disks))) {
# 3308 "md.c"
      break;
    }
# 3309 "md.c"
    major = (int )((unsigned int )((int )rdev->dev >> 8));
# 3310 "md.c"
    tmp___0 = (int )disk_index(rdev->dev);
# 3310 "md.c"
    idx = tmp___0;
# 3312 "md.c"
    if (idx >= 16) {
      goto __Cont;
    } else {
# 3312 "md.c"
      if (major >= 16) {
        goto __Cont;
      }
    }
# 3315 "md.c"
    curr_events = (unsigned long )(kstat.dk_drive_rblk[major][idx] + kstat.dk_drive_wblk[major][idx]);
# 3317 "md.c"
    curr_events -= (unsigned long )sync_io[major][idx];
# 3318 "md.c"
    if (curr_events - rdev->last_events > 32UL) {
# 3319 "md.c"
      rdev->last_events = curr_events;
# 3320 "md.c"
      idle = 0;
    }
    __Cont: ;
  }
# 3323 "md.c"
  return (idle);
}
}
# 3326 "md.c"
struct __wait_queue_head resync_wait = {{(unsigned int volatile )1}, {& resync_wait.task_list, & resync_wait.task_list}};
# 3328 "md.c"
void md_done_sync(mddev_t *mddev , int blocks , int ok )
{

  {
# 3331 "md.c"
  atomic_sub(blocks, & mddev->recovery_active);
# 3332 "md.c"
  __wake_up(& mddev->recovery_wait, 3U, 1);
# 3333 "md.c"
  if (! ok) {
# 3335 "md.c"
    if ((mddev->pers)->stop_resync) {
# 3336 "md.c"
      ((*((mddev->pers)->stop_resync)))(mddev);
    }
# 3337 "md.c"
    if (mddev->recovery_running) {
# 3338 "md.c"
      md_interrupt_thread(md_recovery_thread);
    }
  }
# 3340 "md.c"
  return;
}
}
# 3344 "md.c"
int md_do_sync(mddev_t *mddev , mdp_disk_t *spare )
{ mddev_t *mddev2 ;
  unsigned int max_sectors___0 ;
  unsigned int currspeed ;
  unsigned int j ;
  unsigned int window ;
  unsigned int err ;
  unsigned int serialize ;
  unsigned long mark[10] ;
  unsigned long mark_cnt[10] ;
  int last_mark ;
  int m ;
  struct list_head *tmp ;
  unsigned long last_check ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  struct task_struct *tmp___3 ;
  int tmp___4 ;
  int tmp___5 ;
  struct task_struct *tmp___6 ;
  int sectors ;
  int next ;
  struct task_struct *tmp___7 ;
  int tmp___8 ;
  struct task_struct *tmp___9 ;
  struct task_struct *tmp___10 ;
  struct task_struct *tmp___11 ;
  int tmp___12 ;
  struct task_struct *tmp___13 ;
  int tmp___14 ;
  wait_queue_t __wait ;
  struct task_struct *tmp___15 ;
  struct task_struct *tmp___18 ;
  struct task_struct *tmp___19 ;
  struct task_struct *tmp___20 ;

  {
# 3356 "md.c"
  err = (unsigned int )down_interruptible(& mddev->resync_sem);
# 3357 "md.c"
  if (err) {
    goto out_nolock;
  }
  recheck:
# 3361 "md.c"
  serialize = 0U;
# 3362 "md.c"
  tmp = all_mddevs.next;
# 3362 "md.c"
  while (1) {
# 3362 "md.c"
    mddev2 = (mddev_t *)((char *)tmp - (unsigned long )(& ((mddev_t *)0)->all_mddevs));
# 3362 "md.c"
    tmp = tmp->next;
# 3362 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& all_mddevs))) {
# 3362 "md.c"
      break;
    }
# 3363 "md.c"
    if ((unsigned int )mddev2 == (unsigned int )mddev) {
      goto __Cont;
    }
# 3365 "md.c"
    if (mddev2->curr_resync) {
# 3365 "md.c"
      tmp___2 = match_mddev_units(mddev, mddev2);
# 3365 "md.c"
      if (tmp___2) {
# 3366 "md.c"
        tmp___0 = mdidx(mddev2);
# 3366 "md.c"
        tmp___1 = mdidx(mddev);
# 3366 "md.c"
        printk("<6>md: delaying resync of md%d until md%d has finished resync (they share one or more physical units)\n",
               tmp___1, tmp___0);
# 3369 "md.c"
        serialize = 1U;
# 3370 "md.c"
        break;
      }
    }
    __Cont: ;
  }
# 3373 "md.c"
  if (serialize) {
# 3374 "md.c"
    interruptible_sleep_on(& resync_wait);
# 3375 "md.c"
    tmp___3 = get_current();
# 3375 "md.c"
    tmp___4 = signal_pending(tmp___3);
# 3375 "md.c"
    if (tmp___4) {
# 3376 "md.c"
      md_flush_signals();
# 3377 "md.c"
      err = 4294967292U;
      goto out;
    }
    goto recheck;
  }
# 3383 "md.c"
  mddev->curr_resync = 1UL;
# 3385 "md.c"
  max_sectors___0 = (mddev->sb)->size << 1;
# 3387 "md.c"
  tmp___5 = mdidx(mddev);
# 3387 "md.c"
  printk("<6>md: syncing RAID array md%d\n", tmp___5);
# 3388 "md.c"
  printk("<6>md: minimum _guaranteed_ reconstruction speed: %d KB/sec/disc.\n", sysctl_speed_limit_min);
# 3390 "md.c"
  printk("<6>md: using maximum available idle IO bandwith (but not more than %d KB/sec) for reconstruction.\n",
         sysctl_speed_limit_max);
# 3397 "md.c"
  tmp___6 = get_current();
# 3397 "md.c"
  tmp___6->nice = 19L;
# 3399 "md.c"
  is_mddev_idle(mddev);
# 3400 "md.c"
  m = 0;
# 3400 "md.c"
  while (m < 10) {
# 3401 "md.c"
    mark[m] = (unsigned long )jiffies;
# 3402 "md.c"
    mark_cnt[m] = 0UL;
# 3400 "md.c"
    m ++;
  }
# 3404 "md.c"
  last_mark = 0;
# 3405 "md.c"
  mddev->resync_mark = mark[last_mark];
# 3406 "md.c"
  mddev->resync_mark_cnt = mark_cnt[last_mark];
# 3411 "md.c"
  window = (unsigned int )((unsigned long )vm_max_readahead * 8UL);
# 3412 "md.c"
  printk("<6>md: using %dk window, over a total of %d blocks.\n", window / 2U, max_sectors___0 / 2U);
# 3415 "md.c"
  mddev->recovery_active.counter = (int volatile )0;
# 3416 "md.c"
  init_waitqueue_head(& mddev->recovery_wait);
# 3417 "md.c"
  last_check = 0UL;
# 3418 "md.c"
  j = 0U;
# 3418 "md.c"
  while (j < max_sectors___0) {
# 3421 "md.c"
    sectors = ((*((mddev->pers)->sync_request)))(mddev, (unsigned long )j);
# 3423 "md.c"
    if (sectors < 0) {
# 3424 "md.c"
      err = (unsigned int )sectors;
      goto out;
    }
# 3427 "md.c"
    atomic_add(sectors, & mddev->recovery_active);
# 3428 "md.c"
    j += (unsigned int )sectors;
# 3429 "md.c"
    mddev->curr_resync = (unsigned long )j;
# 3431 "md.c"
    if (last_check + (unsigned long )window > (unsigned long )j) {
      goto __Cont___0;
    }
# 3434 "md.c"
    last_check = (unsigned long )j;
# 3436 "md.c"
    run_task_queue(& tq_disk);
    repeat:
# 3439 "md.c"
    if (jiffies >= (unsigned long volatile )(mark[last_mark] + 300UL)) {
# 3441 "md.c"
      next = (last_mark + 1) % 10;
# 3443 "md.c"
      mddev->resync_mark = mark[next];
# 3444 "md.c"
      mddev->resync_mark_cnt = mark_cnt[next];
# 3445 "md.c"
      mark[next] = (unsigned long )jiffies;
# 3446 "md.c"
      mark_cnt[next] = (unsigned long )(j - (unsigned int )mddev->recovery_active.counter);
# 3447 "md.c"
      last_mark = next;
    }
# 3451 "md.c"
    tmp___7 = get_current();
# 3451 "md.c"
    tmp___8 = signal_pending(tmp___7);
# 3451 "md.c"
    if (tmp___8) {
# 3455 "md.c"
      mddev->curr_resync = 0UL;
# 3456 "md.c"
      printk("<6>md: md_do_sync() got signal ... exiting\n");
# 3457 "md.c"
      md_flush_signals();
# 3458 "md.c"
      err = 4294967292U;
      goto out;
    }
# 3470 "md.c"
    tmp___9 = get_current();
# 3470 "md.c"
    if (tmp___9->need_resched) {
# 3471 "md.c"
      schedule();
    }
# 3473 "md.c"
    currspeed = (unsigned int )((((unsigned long )j - mddev->resync_mark_cnt) / 2UL) / (unsigned long )((jiffies - (unsigned long volatile )mddev->resync_mark) / 100UL + 1UL) + 1UL);
# 3475 "md.c"
    if (currspeed > (unsigned int )sysctl_speed_limit_min) {
# 3476 "md.c"
      tmp___10 = get_current();
# 3476 "md.c"
      tmp___10->nice = 19L;
# 3478 "md.c"
      if (currspeed > (unsigned int )sysctl_speed_limit_max) {
# 3480 "md.c"
        tmp___11 = get_current();
# 3480 "md.c"
        tmp___11->state = (long volatile )1;
# 3481 "md.c"
        schedule_timeout(25L);
        goto repeat;
      } else {
# 3478 "md.c"
        tmp___12 = is_mddev_idle(mddev);
# 3478 "md.c"
        if (! tmp___12) {
# 3480 "md.c"
          tmp___11 = get_current();
# 3480 "md.c"
          tmp___11->state = (long volatile )1;
# 3481 "md.c"
          schedule_timeout(25L);
          goto repeat;
        }
      }
    } else {
# 3485 "md.c"
      tmp___13 = get_current();
# 3485 "md.c"
      tmp___13->nice = -20L;
    }
    __Cont___0: ;
  }
# 3487 "md.c"
  tmp___14 = mdidx(mddev);
# 3487 "md.c"
  printk("<6>md: md%d: sync done.\n", tmp___14);
# 3488 "md.c"
  err = 0U;
  out:
# 3493 "md.c"
  while (! (mddev->recovery_active.counter == 0)) {
# 3493 "md.c"
    while (1) {
# 3493 "md.c"
      tmp___15 = get_current();
# 3493 "md.c"
      init_waitqueue_entry(& __wait, tmp___15);
# 3493 "md.c"
      add_wait_queue(& mddev->recovery_wait, & __wait);
# 3493 "md.c"
      while (1) {
# 3493 "md.c"
        while (1) {
# 3493 "md.c"
          tmp___19 = get_current();
# 3493 "md.c"
          __xchg(2UL, (void volatile *)(& tmp___19->state), (int )sizeof(tmp___18->state));
# 3493 "md.c"
          break;
        }
# 3493 "md.c"
        if (mddev->recovery_active.counter == 0) {
# 3493 "md.c"
          break;
        }
# 3493 "md.c"
        run_task_queue(& tq_disk);
# 3493 "md.c"
        schedule();
      }
# 3493 "md.c"
      tmp___20 = get_current();
# 3493 "md.c"
      tmp___20->state = (long volatile )0;
# 3493 "md.c"
      remove_wait_queue(& mddev->recovery_wait, & __wait);
# 3493 "md.c"
      break;
    }
# 3493 "md.c"
    break;
  }
# 3494 "md.c"
  up(& mddev->resync_sem);
  out_nolock:
# 3496 "md.c"
  mddev->curr_resync = 0UL;
# 3497 "md.c"
  __wake_up(& resync_wait, 3U, 1);
# 3498 "md.c"
  return ((int )err);
}
}
# 3510 "md.c"
void md_do_recovery(void *data )
{ int err ;
  mddev_t *mddev ;
  mdp_super_t *sb ;
  mdp_disk_t *spare ;
  struct list_head *tmp ;
  int tmp___0 ;
  char *tmp___1 ;
  int tmp___2 ;
  int tmp___3 ;
  char *tmp___4 ;
  int tmp___5 ;
  int tmp___6 ;
  int tmp___7 ;
  int tmp___8 ;

  {
# 3518 "md.c"
  printk("<6>md: recovery thread got woken up ...\n");
  restart:
# 3520 "md.c"
  tmp = all_mddevs.next;
# 3520 "md.c"
  while (1) {
# 3520 "md.c"
    mddev = (mddev_t *)((char *)tmp - (unsigned long )(& ((mddev_t *)0)->all_mddevs));
# 3520 "md.c"
    tmp = tmp->next;
# 3520 "md.c"
    if (! ((unsigned int )tmp->prev != (unsigned int )(& all_mddevs))) {
# 3520 "md.c"
      break;
    }
# 3521 "md.c"
    sb = mddev->sb;
# 3522 "md.c"
    if (! sb) {
      goto __Cont;
    }
# 3524 "md.c"
    if (mddev->recovery_running) {
      goto __Cont;
    }
# 3526 "md.c"
    if (sb->active_disks == sb->raid_disks) {
      goto __Cont;
    }
# 3528 "md.c"
    if (mddev->sb_dirty) {
# 3529 "md.c"
      md_update_sb(mddev);
    }
# 3530 "md.c"
    if (! sb->spare_disks) {
# 3531 "md.c"
      tmp___0 = mdidx(mddev);
# 3531 "md.c"
      printk("<3>md%d: no spare disk to reconstruct array! -- continuing in degraded mode\n",
             tmp___0);
      goto __Cont;
    }
# 3538 "md.c"
    spare = get_spare(mddev);
# 3539 "md.c"
    if (! spare) {
      goto __Cont;
    }
# 3541 "md.c"
    tmp___1 = partition_name((unsigned short )((spare->major << 8) | spare->minor));
# 3541 "md.c"
    tmp___2 = mdidx(mddev);
# 3541 "md.c"
    printk("<6>md%d: resyncing spare disk %s to replace failed disk\n", tmp___2, tmp___1);
# 3543 "md.c"
    if (! (mddev->pers)->diskop) {
      goto __Cont;
    }
# 3545 "md.c"
    tmp___3 = ((*((mddev->pers)->diskop)))(mddev, & spare, 1);
# 3545 "md.c"
    if (tmp___3) {
      goto __Cont;
    }
# 3547 "md.c"
    down(& mddev->recovery_sem);
# 3548 "md.c"
    mddev->recovery_running = 1;
# 3549 "md.c"
    err = md_do_sync(mddev, spare);
# 3550 "md.c"
    if (err == -5) {
# 3551 "md.c"
      tmp___4 = partition_name((unsigned short )((spare->major << 8) | spare->minor));
# 3551 "md.c"
      tmp___5 = mdidx(mddev);
# 3551 "md.c"
      printk("<6>md%d: spare disk %s failed, skipping to next spare.\n", tmp___5,
             tmp___4);
# 3553 "md.c"
      tmp___6 = disk_faulty(spare);
# 3553 "md.c"
      if (! tmp___6) {
# 3554 "md.c"
        ((*((mddev->pers)->diskop)))(mddev, & spare, 0);
# 3555 "md.c"
        mark_disk_faulty(spare);
# 3556 "md.c"
        mark_disk_nonsync(spare);
# 3557 "md.c"
        mark_disk_inactive(spare);
# 3558 "md.c"
        sb->spare_disks --;
# 3559 "md.c"
        sb->working_disks --;
# 3560 "md.c"
        sb->failed_disks ++;
      }
    } else {
# 3563 "md.c"
      tmp___7 = disk_faulty(spare);
# 3563 "md.c"
      if (tmp___7) {
# 3564 "md.c"
        ((*((mddev->pers)->diskop)))(mddev, & spare, 0);
      }
    }
# 3566 "md.c"
    if (err == -4) {
# 3571 "md.c"
      ((*((mddev->pers)->diskop)))(mddev, & spare, 0);
# 3573 "md.c"
      up(& mddev->recovery_sem);
# 3574 "md.c"
      mddev->recovery_running = 0;
      goto __Cont;
    } else {
# 3566 "md.c"
      if (err == -12) {
# 3571 "md.c"
        ((*((mddev->pers)->diskop)))(mddev, & spare, 0);
# 3573 "md.c"
        up(& mddev->recovery_sem);
# 3574 "md.c"
        mddev->recovery_running = 0;
        goto __Cont;
      } else {
# 3577 "md.c"
        mddev->recovery_running = 0;
# 3578 "md.c"
        up(& mddev->recovery_sem);
      }
    }
# 3580 "md.c"
    tmp___8 = disk_faulty(spare);
# 3580 "md.c"
    if (! tmp___8) {
# 3585 "md.c"
      ((*((mddev->pers)->diskop)))(mddev, & spare, 2);
# 3586 "md.c"
      mark_disk_sync(spare);
# 3587 "md.c"
      mark_disk_active(spare);
# 3588 "md.c"
      sb->active_disks ++;
# 3589 "md.c"
      sb->spare_disks --;
    }
# 3591 "md.c"
    mddev->sb_dirty = 1;
# 3592 "md.c"
    md_update_sb(mddev);
    goto restart;
    __Cont: ;
  }
# 3595 "md.c"
  printk("<6>md: recovery thread finished ...\n");
# 3597 "md.c"
  return;
}
}
# 3599 "md.c"
int md_notify_reboot(struct notifier_block *this , unsigned long code , void *x )
{ struct list_head *tmp ;
  mddev_t *mddev ;
  unsigned long msec ;
  unsigned long tmp___0 ;

  {
# 3605 "md.c"
  if (code == 1UL) {
    goto _L;
  } else {
# 3605 "md.c"
    if (code == 2UL) {
      goto _L;
    } else {
# 3605 "md.c"
      if (code == 3UL) {
        _L:
# 3608 "md.c"
        printk("<6>md: stopping all md devices.\n");
# 3610 "md.c"
        tmp = all_mddevs.next;
# 3610 "md.c"
        while (1) {
# 3610 "md.c"
          mddev = (mddev_t *)((char *)tmp - (unsigned long )(& ((mddev_t *)0)->all_mddevs));
# 3610 "md.c"
          tmp = tmp->next;
# 3610 "md.c"
          if (! ((unsigned int )tmp->prev != (unsigned int )(& all_mddevs))) {
# 3610 "md.c"
            break;
          }
# 3611 "md.c"
          do_md_stop(mddev, 1);
        }
# 3618 "md.c"
        msec = 1000UL;
# 3618 "md.c"
        while (1) {
# 3618 "md.c"
          tmp___0 = msec;
# 3618 "md.c"
          msec --;
# 3618 "md.c"
          if (! tmp___0) {
# 3618 "md.c"
            break;
          }
# 3618 "md.c"
          __const_udelay(4294000UL);
        }
      }
    }
  }
# 3620 "md.c"
  return (0);
}
}
# 3623 "md.c"
struct notifier_block md_notifier = {& md_notify_reboot, (struct notifier_block *)((void *)0), 2147483647};
# 3629 "md.c"
static void md_geninit(void)
{ int i ;

  {
# 3633 "md.c"
  i = 0;
# 3633 "md.c"
  while (i < 256) {
# 3634 "md.c"
    md_blocksizes[i] = 1024;
# 3635 "md.c"
    md_size[i] = 0;
# 3636 "md.c"
    md_hardsect_sizes[i] = 512;
# 3637 "md.c"
    md_maxreadahead[i] = vm_max_readahead;
# 3633 "md.c"
    i ++;
  }
# 3639 "md.c"
  blksize_size[9] = md_blocksizes;
# 3640 "md.c"
  blk_size[9] = md_size;
# 3641 "md.c"
  max_readahead[9] = md_maxreadahead;
# 3642 "md.c"
  hardsect_size[9] = md_hardsect_sizes;
# 3644 "md.c"
  while (1) {
# 3644 "md.c"
    break;
  }
# 3647 "md.c"
  create_proc_read_entry("mdstat", (unsigned short)0, (struct proc_dir_entry *)((void *)0),
                         & md_status_read_proc, (void *)0);
# 3649 "md.c"
  return;
}
}
# 3653 "md.c"
int md_init(void) __attribute__((__section__(".text.init"))) ;
# 3653 "md.c"
static char *name = (char *)"mdrecoveryd";
# 3651 "md.c"
int md_init(void) __attribute__((__section__(".text.init"))) ;
# 3651 "md.c"
int md_init(void)
{ int minor ;
  int tmp ;
  char devname[128] ;

  {
# 3656 "md.c"
  printk("<6>md: md driver %d.%d.%d MAX_MD_DEVS=%d, MD_SB_DISKS=%d\n", 0, 90, 0, 256,
         27);
# 3660 "md.c"
  tmp = devfs_register_blkdev(9U, "md", & md_fops);
# 3660 "md.c"
  if (tmp) {
# 3662 "md.c"
    printk("<1>md: Unable to get major %d for md\n", 9);
# 3663 "md.c"
    return (-1);
  }
# 3665 "md.c"
  devfs_handle = devfs_mk_dir((struct devfs_entry *)((void *)0), "md", (void *)0);
# 3667 "md.c"
  minor = 0;
# 3667 "md.c"
  while (minor < 256) {
# 3669 "md.c"
    sprintf(devname, "%u", minor);
# 3670 "md.c"
    md_hd_struct[minor].de = devfs_register(devfs_handle, (char const *)(devname),
                                            0U, 9U, (unsigned int )minor, (unsigned short)24960,
                                            (void *)(& md_fops), (void *)0);
# 3667 "md.c"
    minor ++;
  }
# 3676 "md.c"
  blk_queue_make_request(& blk_dev[9].request_queue, & md_make_request);
# 3679 "md.c"
  read_ahead[9] = 2147483647;
# 3681 "md.c"
  add_gendisk(& md_gendisk);
# 3683 "md.c"
  md_recovery_thread = md_register_thread(& md_do_recovery, (void *)0, (char const *)name);
# 3684 "md.c"
  if (! md_recovery_thread) {
# 3685 "md.c"
    printk("<1>md: bug: couldn\'t allocate md_recovery_thread\n");
  }
# 3687 "md.c"
  register_reboot_notifier(& md_notifier);
# 3688 "md.c"
  raid_table_header = register_sysctl_table(raid_root_table, 1);
# 3690 "md.c"
  md_geninit();
# 3691 "md.c"
  return (0);
}
}
# 3706 "md.c"
struct __anonstruct_raid_setup_args_206 raid_setup_args __attribute__((__section__(".data.init"))) ;
# 3715 "md.c"
static int detected_devices[128] ;
# 3716 "md.c"
static int dev_cnt ;
# 3718 "md.c"
void md_autodetect_dev(kdev_t dev )
{ int tmp ;

  {
# 3720 "md.c"
  if (dev_cnt >= 0) {
# 3720 "md.c"
    if (dev_cnt < 127) {
# 3721 "md.c"
      tmp = dev_cnt;
# 3721 "md.c"
      dev_cnt ++;
# 3721 "md.c"
      detected_devices[tmp] = (int )dev;
    }
  }
# 3722 "md.c"
  return;
}
}
# 3725 "md.c"
static void autostart_arrays(void)
{ mdk_rdev_t *rdev ;
  int i ;
  kdev_t dev ;
  char *tmp ;
  int tmp___0 ;

  {
# 3730 "md.c"
  printk("<6>md: Autodetecting RAID arrays.\n");
# 3732 "md.c"
  i = 0;
# 3732 "md.c"
  while (i < dev_cnt) {
# 3733 "md.c"
    dev = (kdev_t )detected_devices[i];
# 3735 "md.c"
    tmp___0 = md_import_device(dev, 1);
# 3735 "md.c"
    if (tmp___0) {
# 3736 "md.c"
      tmp = partition_name(dev);
# 3736 "md.c"
      printk("<1>md: could not import %s!\n", tmp);
      goto __Cont;
    }
# 3743 "md.c"
    rdev = find_rdev_all(dev);
# 3744 "md.c"
    if (! rdev) {
# 3745 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 3745);
# 3745 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 3748 "md.c"
    if (rdev->faulty) {
# 3749 "md.c"
      printk("md: bug in file %s, line %d\n", "md.c", 3749);
# 3749 "md.c"
      md_print_devices();
      goto __Cont;
    }
# 3752 "md.c"
    list_add(& rdev->pending, & pending_raid_disks);
    __Cont:
# 3732 "md.c"
    i ++;
  }
# 3754 "md.c"
  dev_cnt = 0;
# 3756 "md.c"
  autorun_devices((unsigned short)65535);
# 3757 "md.c"
  return;
}
}
# 3759 "md.c"
static struct __anonstruct_md_setup_args_207 md_setup_args __attribute__((__section__(".data.init"))) ;
# 3847 "md.c"
extern kdev_t name_to_kdev_t(char *line ) __attribute__((__section__(".text.init"))) ;
# 3848 "md.c"
void md_setup_drive(void) __attribute__((__section__(".text.init"))) ;
# 3848 "md.c"
void md_setup_drive(void)
{ int minor ;
  int i ;
  kdev_t dev ;
  mddev_t *mddev ;
  kdev_t devices[28] ;
  int err ;
  char *devname ;
  mdu_disk_info_t dinfo ;
  char *p ;
  void *handle ;
  char *tmp ;
  unsigned int major ;
  unsigned int minor___0 ;
  mdu_array_info_t ainfo ;

  {
# 3855 "md.c"
  minor = 0;
# 3855 "md.c"
  while (minor < 256) {
# 3856 "md.c"
    err = 0;
# 3860 "md.c"
    devname = md_setup_args.device_names[minor];
# 3860 "md.c"
    if ((unsigned int )devname == (unsigned int )((char *)0)) {
      goto __Cont;
    }
# 3862 "md.c"
    i = 0;
# 3862 "md.c"
    while (1) {
# 3862 "md.c"
      if (i < 27) {
# 3862 "md.c"
        if (! ((unsigned int )devname != (unsigned int )((char *)0))) {
# 3862 "md.c"
          break;
        }
      } else {
# 3862 "md.c"
        break;
      }
# 3867 "md.c"
      p = strchr((char const *)devname, ',');
# 3868 "md.c"
      if (p) {
# 3869 "md.c"
        tmp = p;
# 3869 "md.c"
        p ++;
# 3869 "md.c"
        (*tmp) = (char)0;
      }
# 3871 "md.c"
      dev = name_to_kdev_t(devname);
# 3872 "md.c"
      handle = (void *)devfs_find_handle((struct devfs_entry *)((void *)0), (char const *)devname,
                                         (unsigned int )((int )dev >> 8), (unsigned int )dev & 255U,
                                         (char)1, 1);
# 3874 "md.c"
      if ((unsigned int )handle != (unsigned int )((void *)0)) {
# 3876 "md.c"
        devfs_get_maj_min((struct devfs_entry *)handle, & major, & minor___0);
# 3877 "md.c"
        dev = (unsigned short )((major << 8) | minor___0);
      }
# 3879 "md.c"
      if ((int )dev == 0) {
# 3880 "md.c"
        printk("<4>md: Unknown device name: %s\n", devname);
# 3881 "md.c"
        break;
      }
# 3884 "md.c"
      devices[i] = dev;
# 3885 "md.c"
      md_setup_args.device_set[minor] = (char)1;
# 3887 "md.c"
      devname = p;
# 3862 "md.c"
      i ++;
    }
# 3889 "md.c"
    devices[i] = (unsigned short)0;
# 3891 "md.c"
    if ((int )md_setup_args.device_set[minor] == 0) {
      goto __Cont;
    }
# 3894 "md.c"
    if (mddev_map[minor].mddev) {
# 3895 "md.c"
      printk("<4>md: Ignoring md=%d, already autodetected. (Use raid=noautodetect)\n",
             minor);
      goto __Cont;
    }
# 3900 "md.c"
    printk("<6>md: Loading md%d: %s\n", minor, md_setup_args.device_names[minor]);
# 3902 "md.c"
    mddev = alloc_mddev((unsigned short )(2304 | minor));
# 3903 "md.c"
    if (! mddev) {
# 3904 "md.c"
      printk("<3>md: kmalloc failed - cannot start array %d\n", minor);
      goto __Cont;
    }
# 3907 "md.c"
    if (md_setup_args.pers[minor]) {
# 3910 "md.c"
      ainfo.level = pers_to_level(md_setup_args.pers[minor]);
# 3911 "md.c"
      ainfo.size = 0;
# 3912 "md.c"
      ainfo.nr_disks = 0;
# 3913 "md.c"
      ainfo.raid_disks = 0;
# 3914 "md.c"
      ainfo.md_minor = minor;
# 3915 "md.c"
      ainfo.not_persistent = 1;
# 3917 "md.c"
      ainfo.state = 1;
# 3918 "md.c"
      ainfo.active_disks = 0;
# 3919 "md.c"
      ainfo.working_disks = 0;
# 3920 "md.c"
      ainfo.failed_disks = 0;
# 3921 "md.c"
      ainfo.spare_disks = 0;
# 3922 "md.c"
      ainfo.layout = 0;
# 3923 "md.c"
      ainfo.chunk_size = md_setup_args.chunk[minor];
# 3924 "md.c"
      err = set_array_info(mddev, & ainfo);
# 3925 "md.c"
      i = 0;
# 3925 "md.c"
      while (1) {
# 3925 "md.c"
        if (! err) {
# 3925 "md.c"
          dev = devices[i];
# 3925 "md.c"
          if (! dev) {
# 3925 "md.c"
            break;
          }
        } else {
# 3925 "md.c"
          break;
        }
# 3926 "md.c"
        dinfo.number = i;
# 3927 "md.c"
        dinfo.raid_disk = i;
# 3928 "md.c"
        dinfo.state = 6;
# 3929 "md.c"
        dinfo.major = (int )((unsigned int )((int )dev >> 8));
# 3930 "md.c"
        dinfo.minor = (int )((unsigned int )dev & 255U);
# 3931 "md.c"
        (mddev->sb)->nr_disks ++;
# 3932 "md.c"
        (mddev->sb)->raid_disks ++;
# 3933 "md.c"
        (mddev->sb)->active_disks ++;
# 3934 "md.c"
        (mddev->sb)->working_disks ++;
# 3935 "md.c"
        err = add_new_disk(mddev, & dinfo);
# 3925 "md.c"
        i ++;
      }
    } else {
# 3939 "md.c"
      i = 0;
# 3939 "md.c"
      while (1) {
# 3939 "md.c"
        dev = devices[i];
# 3939 "md.c"
        if (! dev) {
# 3939 "md.c"
          break;
        }
# 3940 "md.c"
        dinfo.major = (int )((unsigned int )((int )dev >> 8));
# 3941 "md.c"
        dinfo.minor = (int )((unsigned int )dev & 255U);
# 3942 "md.c"
        add_new_disk(mddev, & dinfo);
# 3939 "md.c"
        i ++;
      }
    }
# 3945 "md.c"
    if (! err) {
# 3946 "md.c"
      err = do_md_run(mddev);
    }
# 3947 "md.c"
    if (err) {
# 3948 "md.c"
      mddev->sb_dirty = 0;
# 3949 "md.c"
      do_md_stop(mddev, 0);
# 3950 "md.c"
      printk("<4>md: starting md%d failed\n", minor);
    }
    __Cont:
# 3855 "md.c"
    minor ++;
  }
# 3953 "md.c"
  return;
}
}
# 3977 "md.c"
int md_run_setup(void) __attribute__((__section__(".text.init"))) ;
# 3977 "md.c"
int md_run_setup(void)
{

  {
# 3979 "md.c"
  if (raid_setup_args.noautodetect) {
# 3980 "md.c"
    printk("<6>md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n");
  } else {
# 3982 "md.c"
    autostart_arrays();
  }
# 3983 "md.c"
  md_setup_drive();
# 3984 "md.c"
  return (0);
}
}
# 4035 "md.c"
char const __kstrtab_md_size[23] __attribute__((__section__(".kstrtab"))) =
# 4035 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'s',
        (char const )'i', (char const )'z', (char const )'e', (char const )'_',
        (char const )'R', (char const )'_', (char const )'_', (char const )'v',
        (char const )'e', (char const )'r', (char const )'_', (char const )'m',
        (char const )'d', (char const )'_', (char const )'s', (char const )'i',
        (char const )'z', (char const )'e', (char const )'\000'};
# 4035 "md.c"
struct module_symbol const __ksymtab_md_size __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_size),
    __kstrtab_md_size};
# 4036 "md.c"
char const __kstrtab_register_md_personality[55] __attribute__((__section__(".kstrtab"))) =
# 4036 "md.c"
  { (char const )'r', (char const )'e', (char const )'g', (char const )'i',
        (char const )'s', (char const )'t', (char const )'e', (char const )'r',
        (char const )'_', (char const )'m', (char const )'d', (char const )'_',
        (char const )'p', (char const )'e', (char const )'r', (char const )'s',
        (char const )'o', (char const )'n', (char const )'a', (char const )'l',
        (char const )'i', (char const )'t', (char const )'y', (char const )'_',
        (char const )'R', (char const )'_', (char const )'_', (char const )'v',
        (char const )'e', (char const )'r', (char const )'_', (char const )'r',
        (char const )'e', (char const )'g', (char const )'i', (char const )'s',
        (char const )'t', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'p',
        (char const )'e', (char const )'r', (char const )'s', (char const )'o',
        (char const )'n', (char const )'a', (char const )'l', (char const )'i',
        (char const )'t', (char const )'y', (char const )'\000'};
# 4036 "md.c"
struct module_symbol const __ksymtab_register_md_personality __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& register_md_personality),
    __kstrtab_register_md_personality};
# 4037 "md.c"
char const __kstrtab_unregister_md_personality[59] __attribute__((__section__(".kstrtab"))) =
# 4037 "md.c"
  { (char const )'u', (char const )'n', (char const )'r', (char const )'e',
        (char const )'g', (char const )'i', (char const )'s', (char const )'t',
        (char const )'e', (char const )'r', (char const )'_', (char const )'m',
        (char const )'d', (char const )'_', (char const )'p', (char const )'e',
        (char const )'r', (char const )'s', (char const )'o', (char const )'n',
        (char const )'a', (char const )'l', (char const )'i', (char const )'t',
        (char const )'y', (char const )'_', (char const )'R', (char const )'_',
        (char const )'_', (char const )'v', (char const )'e', (char const )'r',
        (char const )'_', (char const )'u', (char const )'n', (char const )'r',
        (char const )'e', (char const )'g', (char const )'i', (char const )'s',
        (char const )'t', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'p',
        (char const )'e', (char const )'r', (char const )'s', (char const )'o',
        (char const )'n', (char const )'a', (char const )'l', (char const )'i',
        (char const )'t', (char const )'y', (char const )'\000'};
# 4037 "md.c"
struct module_symbol const __ksymtab_unregister_md_personality __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& unregister_md_personality),
    __kstrtab_unregister_md_personality};
# 4038 "md.c"
char const __kstrtab_partition_name[37] __attribute__((__section__(".kstrtab"))) =
# 4038 "md.c"
  { (char const )'p', (char const )'a', (char const )'r', (char const )'t',
        (char const )'i', (char const )'t', (char const )'i', (char const )'o',
        (char const )'n', (char const )'_', (char const )'n', (char const )'a',
        (char const )'m', (char const )'e', (char const )'_', (char const )'R',
        (char const )'_', (char const )'_', (char const )'v', (char const )'e',
        (char const )'r', (char const )'_', (char const )'p', (char const )'a',
        (char const )'r', (char const )'t', (char const )'i', (char const )'t',
        (char const )'i', (char const )'o', (char const )'n', (char const )'_',
        (char const )'n', (char const )'a', (char const )'m', (char const )'e',
        (char const )'\000'};
# 4038 "md.c"
struct module_symbol const __ksymtab_partition_name __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& partition_name),
    __kstrtab_partition_name};
# 4039 "md.c"
char const __kstrtab_md_error[25] __attribute__((__section__(".kstrtab"))) =
# 4039 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'e',
        (char const )'r', (char const )'r', (char const )'o', (char const )'r',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'e',
        (char const )'r', (char const )'r', (char const )'o', (char const )'r',
        (char const )'\000'};
# 4039 "md.c"
struct module_symbol const __ksymtab_md_error __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_error),
    __kstrtab_md_error};
# 4040 "md.c"
char const __kstrtab_md_do_sync[29] __attribute__((__section__(".kstrtab"))) =
# 4040 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'d',
        (char const )'o', (char const )'_', (char const )'s', (char const )'y',
        (char const )'n', (char const )'c', (char const )'_', (char const )'R',
        (char const )'_', (char const )'_', (char const )'v', (char const )'e',
        (char const )'r', (char const )'_', (char const )'m', (char const )'d',
        (char const )'_', (char const )'d', (char const )'o', (char const )'_',
        (char const )'s', (char const )'y', (char const )'n', (char const )'c',
        (char const )'\000'};
# 4040 "md.c"
struct module_symbol const __ksymtab_md_do_sync __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_do_sync),
    __kstrtab_md_do_sync};
# 4041 "md.c"
char const __kstrtab_md_sync_acct[33] __attribute__((__section__(".kstrtab"))) =
# 4041 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'s',
        (char const )'y', (char const )'n', (char const )'c', (char const )'_',
        (char const )'a', (char const )'c', (char const )'c', (char const )'t',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'s',
        (char const )'y', (char const )'n', (char const )'c', (char const )'_',
        (char const )'a', (char const )'c', (char const )'c', (char const )'t',
        (char const )'\000'};
# 4041 "md.c"
struct module_symbol const __ksymtab_md_sync_acct __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_sync_acct),
    __kstrtab_md_sync_acct};
# 4042 "md.c"
char const __kstrtab_md_done_sync[33] __attribute__((__section__(".kstrtab"))) =
# 4042 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'d',
        (char const )'o', (char const )'n', (char const )'e', (char const )'_',
        (char const )'s', (char const )'y', (char const )'n', (char const )'c',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'d',
        (char const )'o', (char const )'n', (char const )'e', (char const )'_',
        (char const )'s', (char const )'y', (char const )'n', (char const )'c',
        (char const )'\000'};
# 4042 "md.c"
struct module_symbol const __ksymtab_md_done_sync __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_done_sync),
    __kstrtab_md_done_sync};
# 4043 "md.c"
char const __kstrtab_md_recover_arrays[43] __attribute__((__section__(".kstrtab"))) =
# 4043 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'r',
        (char const )'e', (char const )'c', (char const )'o', (char const )'v',
        (char const )'e', (char const )'r', (char const )'_', (char const )'a',
        (char const )'r', (char const )'r', (char const )'a', (char const )'y',
        (char const )'s', (char const )'_', (char const )'R', (char const )'_',
        (char const )'_', (char const )'v', (char const )'e', (char const )'r',
        (char const )'_', (char const )'m', (char const )'d', (char const )'_',
        (char const )'r', (char const )'e', (char const )'c', (char const )'o',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'a', (char const )'r', (char const )'r', (char const )'a',
        (char const )'y', (char const )'s', (char const )'\000'};
# 4043 "md.c"
struct module_symbol const __ksymtab_md_recover_arrays __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_recover_arrays),
    __kstrtab_md_recover_arrays};
# 4044 "md.c"
char const __kstrtab_md_register_thread[45] __attribute__((__section__(".kstrtab"))) =
# 4044 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'r',
        (char const )'e', (char const )'g', (char const )'i', (char const )'s',
        (char const )'t', (char const )'e', (char const )'r', (char const )'_',
        (char const )'t', (char const )'h', (char const )'r', (char const )'e',
        (char const )'a', (char const )'d', (char const )'_', (char const )'R',
        (char const )'_', (char const )'_', (char const )'v', (char const )'e',
        (char const )'r', (char const )'_', (char const )'m', (char const )'d',
        (char const )'_', (char const )'r', (char const )'e', (char const )'g',
        (char const )'i', (char const )'s', (char const )'t', (char const )'e',
        (char const )'r', (char const )'_', (char const )'t', (char const )'h',
        (char const )'r', (char const )'e', (char const )'a', (char const )'d',
        (char const )'\000'};
# 4044 "md.c"
struct module_symbol const __ksymtab_md_register_thread __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_register_thread),
    __kstrtab_md_register_thread};
# 4045 "md.c"
char const __kstrtab_md_unregister_thread[49] __attribute__((__section__(".kstrtab"))) =
# 4045 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'u',
        (char const )'n', (char const )'r', (char const )'e', (char const )'g',
        (char const )'i', (char const )'s', (char const )'t', (char const )'e',
        (char const )'r', (char const )'_', (char const )'t', (char const )'h',
        (char const )'r', (char const )'e', (char const )'a', (char const )'d',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'u',
        (char const )'n', (char const )'r', (char const )'e', (char const )'g',
        (char const )'i', (char const )'s', (char const )'t', (char const )'e',
        (char const )'r', (char const )'_', (char const )'t', (char const )'h',
        (char const )'r', (char const )'e', (char const )'a', (char const )'d',
        (char const )'\000'};
# 4045 "md.c"
struct module_symbol const __ksymtab_md_unregister_thread __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_unregister_thread),
    __kstrtab_md_unregister_thread};
# 4046 "md.c"
char const __kstrtab_md_update_sb[33] __attribute__((__section__(".kstrtab"))) =
# 4046 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'u',
        (char const )'p', (char const )'d', (char const )'a', (char const )'t',
        (char const )'e', (char const )'_', (char const )'s', (char const )'b',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'u',
        (char const )'p', (char const )'d', (char const )'a', (char const )'t',
        (char const )'e', (char const )'_', (char const )'s', (char const )'b',
        (char const )'\000'};
# 4046 "md.c"
struct module_symbol const __ksymtab_md_update_sb __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_update_sb),
    __kstrtab_md_update_sb};
# 4047 "md.c"
char const __kstrtab_md_wakeup_thread[41] __attribute__((__section__(".kstrtab"))) =
# 4047 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'w',
        (char const )'a', (char const )'k', (char const )'e', (char const )'u',
        (char const )'p', (char const )'_', (char const )'t', (char const )'h',
        (char const )'r', (char const )'e', (char const )'a', (char const )'d',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'w',
        (char const )'a', (char const )'k', (char const )'e', (char const )'u',
        (char const )'p', (char const )'_', (char const )'t', (char const )'h',
        (char const )'r', (char const )'e', (char const )'a', (char const )'d',
        (char const )'\000'};
# 4047 "md.c"
struct module_symbol const __ksymtab_md_wakeup_thread __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_wakeup_thread),
    __kstrtab_md_wakeup_thread};
# 4048 "md.c"
char const __kstrtab_md_print_devices[41] __attribute__((__section__(".kstrtab"))) =
# 4048 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'p',
        (char const )'r', (char const )'i', (char const )'n', (char const )'t',
        (char const )'_', (char const )'d', (char const )'e', (char const )'v',
        (char const )'i', (char const )'c', (char const )'e', (char const )'s',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'m', (char const )'d', (char const )'_', (char const )'p',
        (char const )'r', (char const )'i', (char const )'n', (char const )'t',
        (char const )'_', (char const )'d', (char const )'e', (char const )'v',
        (char const )'i', (char const )'c', (char const )'e', (char const )'s',
        (char const )'\000'};
# 4048 "md.c"
struct module_symbol const __ksymtab_md_print_devices __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_print_devices),
    __kstrtab_md_print_devices};
# 4049 "md.c"
char const __kstrtab_find_rdev_nr[33] __attribute__((__section__(".kstrtab"))) =
# 4049 "md.c"
  { (char const )'f', (char const )'i', (char const )'n', (char const )'d',
        (char const )'_', (char const )'r', (char const )'d', (char const )'e',
        (char const )'v', (char const )'_', (char const )'n', (char const )'r',
        (char const )'_', (char const )'R', (char const )'_', (char const )'_',
        (char const )'v', (char const )'e', (char const )'r', (char const )'_',
        (char const )'f', (char const )'i', (char const )'n', (char const )'d',
        (char const )'_', (char const )'r', (char const )'d', (char const )'e',
        (char const )'v', (char const )'_', (char const )'n', (char const )'r',
        (char const )'\000'};
# 4049 "md.c"
struct module_symbol const __ksymtab_find_rdev_nr __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& find_rdev_nr),
    __kstrtab_find_rdev_nr};
# 4050 "md.c"
char const __kstrtab_md_interrupt_thread[47] __attribute__((__section__(".kstrtab"))) =
# 4050 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'i',
        (char const )'n', (char const )'t', (char const )'e', (char const )'r',
        (char const )'r', (char const )'u', (char const )'p', (char const )'t',
        (char const )'_', (char const )'t', (char const )'h', (char const )'r',
        (char const )'e', (char const )'a', (char const )'d', (char const )'_',
        (char const )'R', (char const )'_', (char const )'_', (char const )'v',
        (char const )'e', (char const )'r', (char const )'_', (char const )'m',
        (char const )'d', (char const )'_', (char const )'i', (char const )'n',
        (char const )'t', (char const )'e', (char const )'r', (char const )'r',
        (char const )'u', (char const )'p', (char const )'t', (char const )'_',
        (char const )'t', (char const )'h', (char const )'r', (char const )'e',
        (char const )'a', (char const )'d', (char const )'\000'};
# 4050 "md.c"
struct module_symbol const __ksymtab_md_interrupt_thread __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_interrupt_thread),
    __kstrtab_md_interrupt_thread};
# 4051 "md.c"
char const __kstrtab_mddev_map[27] __attribute__((__section__(".kstrtab"))) =
# 4051 "md.c"
  { (char const )'m', (char const )'d', (char const )'d', (char const )'e',
        (char const )'v', (char const )'_', (char const )'m', (char const )'a',
        (char const )'p', (char const )'_', (char const )'R', (char const )'_',
        (char const )'_', (char const )'v', (char const )'e', (char const )'r',
        (char const )'_', (char const )'m', (char const )'d', (char const )'d',
        (char const )'e', (char const )'v', (char const )'_', (char const )'m',
        (char const )'a', (char const )'p', (char const )'\000'};
# 4051 "md.c"
struct module_symbol const __ksymtab_mddev_map __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& mddev_map),
    __kstrtab_mddev_map};
# 4052 "md.c"
char const __kstrtab_md_check_ordering[43] __attribute__((__section__(".kstrtab"))) =
# 4052 "md.c"
  { (char const )'m', (char const )'d', (char const )'_', (char const )'c',
        (char const )'h', (char const )'e', (char const )'c', (char const )'k',
        (char const )'_', (char const )'o', (char const )'r', (char const )'d',
        (char const )'e', (char const )'r', (char const )'i', (char const )'n',
        (char const )'g', (char const )'_', (char const )'R', (char const )'_',
        (char const )'_', (char const )'v', (char const )'e', (char const )'r',
        (char const )'_', (char const )'m', (char const )'d', (char const )'_',
        (char const )'c', (char const )'h', (char const )'e', (char const )'c',
        (char const )'k', (char const )'_', (char const )'o', (char const )'r',
        (char const )'d', (char const )'e', (char const )'r', (char const )'i',
        (char const )'n', (char const )'g', (char const )'\000'};
# 4052 "md.c"
struct module_symbol const __ksymtab_md_check_ordering __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& md_check_ordering),
    __kstrtab_md_check_ordering};
# 4053 "md.c"
char const __kstrtab_get_spare[27] __attribute__((__section__(".kstrtab"))) =
# 4053 "md.c"
  { (char const )'g', (char const )'e', (char const )'t', (char const )'_',
        (char const )'s', (char const )'p', (char const )'a', (char const )'r',
        (char const )'e', (char const )'_', (char const )'R', (char const )'_',
        (char const )'_', (char const )'v', (char const )'e', (char const )'r',
        (char const )'_', (char const )'g', (char const )'e', (char const )'t',
        (char const )'_', (char const )'s', (char const )'p', (char const )'a',
        (char const )'r', (char const )'e', (char const )'\000'};
# 4053 "md.c"
struct module_symbol const __ksymtab_get_spare __attribute__((__section__("__ksymtab"))) = {(unsigned long )(& get_spare),
    __kstrtab_get_spare};
